Note to Self

自分用のメモ置き場

phpinfo()をコマンドラインで実行する

phpinfo()をコマンドラインで実行する

よく忘れるのでメモ

<?php

php -r 'phpinfo();'

?>

※2017/10/11 追記
単純に、以下のオプションでも実行できる

 $ php -i

PHPのmkdir() 関数でエラーが発生した原因と対応方法

PHPのmkdir() 関数でエラーが発生した原因と対応方法

PHPのmkdir() 関数を使ってディレクトリを作成しようとした所、以下のようなエラーが発生した

<?php

mkdir($directoryPath, 0777, true);

PHP Warning:  mkdir(): Permission denied in ~

?>


作成したいディレクトリの親ディレクトリに、PHP を実行している httpd の実行権限がなかったのが原因
権限を付与すると正常に動作した

MySQLで半角カタカナを全角に変換する

MySQLで半角カタカナを全角に変換する

便利な関数は無いため、ストアドファンクションを作成し対応

DROP FUNCTION IF EXISTS kanaToKANA;

DELIMITER //

CREATE FUNCTION kanaToKANA (data TEXT) RETURNS TEXT DETERMINISTIC
BEGIN
  DECLARE kana1_len, kana2_len INT;
  DECLARE kana1_h VARCHAR(62) DEFAULT 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンッャュョァィゥェォ ー。「」、・';
  DECLARE kana1_z VARCHAR(62) DEFAULT 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンッャュョァィゥェォ ー。「」、・';
  DECLARE kana2_h VARCHAR(52) DEFAULT 'ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴ';
  DECLARE kana2_z VARCHAR(26) DEFAULT 'ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴ';

  SET kana1_len = CHAR_LENGTH(kana1_z);
  SET kana2_len = CHAR_LENGTH(kana2_z);

  WHILE kana2_len > 0 DO
    SET data = REPLACE(data, SUBSTRING(kana2_h, kana2_len * 2 - 1, 2), SUBSTRING(kana2_z, kana2_len, 1));
    SET kana2_len = kana2_len - 1;
  END WHILE;

  WHILE kana1_len > 0 DO
    SET data = REPLACE(data, SUBSTRING(kana1_h, kana1_len, 1), SUBSTRING(kana1_z, kana1_len, 1));
    SET kana1_len = kana1_len - 1;
  END WHILE;

  RETURN data;
END;
//
DELIMITER ;


-- 正しく変換できるか確認
SELECT hogeKanaName, kanaToKANA(hogeKanaName) FROM t_hoge;

-- 対象レコードを更新
UPDATE t_hoge SET hogeKanaName = kanaToKANA(hogeKanaName);

Linuxで30分以内に変更したファイルを削除する

Linuxで30分以内に変更したファイルを削除する

find を使ってファイルを特定する

find . -type f -mmin -30 -exec rm -f {} \;

※いきなり実行するのは危険なので、必ず対象ファイルを確認してから実行すること

Pythonバージョンアップによる yum の SyntaxErrorについて

以前、python3.6 をインストールした際、エイリアスを変更したことで、yumでエラーが発生した模様

修正前

[root@localhost ~]# ll /usr/bin/python*
lrwxrwxrwx. 1 root root    12 May 31 17:49 /usr/bin/python -> /bin/python3
lrwxrwxrwx. 1 root root     9 Apr 27 03:48 /usr/bin/python2 -> python2.7
-rwxr-xr-x. 1 root root  7136 Nov  6  2016 /usr/bin/python2.7
lrwxrwxrwx. 1 root root    14 May 31 17:47 /usr/bin/python3 -> /bin/python3.6
-rwxr-xr-x. 2 root root 11312 Apr  7 23:35 /usr/bin/python3.6
lrwxrwxrwx. 1 root root    26 May 31 17:22 /usr/bin/python3.6-config -> /usr/bin/python3.6m-config
-rwxr-xr-x. 2 root root 11312 Apr  7 23:35 /usr/bin/python3.6m
-rwxr-xr-x. 1 root root   173 Apr  7 23:34 /usr/bin/python3.6m-config
-rwxr-xr-x. 1 root root  3415 Apr  7 23:32 /usr/bin/python3.6m-x86_64-config


リンクを貼り直して対応する

-- python のエイリアスを python3.6 から、python2.7に変更
unlink /bin/python
ln -s /bin/python2 /bin/python


修正後

[root@localhost ~]# ll /usr/bin/python*
lrwxrwxrwx. 1 root root    12 Jul 10 14:14 /usr/bin/python -> /bin/python2
lrwxrwxrwx. 1 root root     9 Apr 27 03:48 /usr/bin/python2 -> python2.7
-rwxr-xr-x. 1 root root  7136 Nov  6  2016 /usr/bin/python2.7
lrwxrwxrwx. 1 root root    14 May 31 17:47 /usr/bin/python3 -> /bin/python3.6
-rwxr-xr-x. 2 root root 11312 Apr  7 23:35 /usr/bin/python3.6
lrwxrwxrwx. 1 root root    26 May 31 17:22 /usr/bin/python3.6-config -> /usr/bin/python3.6m-config
-rwxr-xr-x. 2 root root 11312 Apr  7 23:35 /usr/bin/python3.6m
-rwxr-xr-x. 1 root root   173 Apr  7 23:34 /usr/bin/python3.6m-config
-rwxr-xr-x. 1 root root  3415 Apr  7 23:32 /usr/bin/python3.6m-x86_64-config

PHP をソースからインストールする

PHPをインストー

# cd /usr/local/src

-- http://php.net/downloads.php から任意のミラーサイトを選択して、ダウンロード
# wget -O php-7.1.7.tar.gz http://php.net/get/php-7.1.7.tar.gz/from/this/mirror

# tar -zxvf php-7.1.7.tar.gz

# cd php-7.1.7

# ./configure

# make && make install


configureで以下のようなエラーが発生する場合

configure: error: xml2-config not found. Please check your libxml2 installation.

libxml2-devel をインストールすると解決

# yum install libxml2-devel

PHPの多重代入

PHPの多重代入

PHPで複数の変数に同じ値を代入する

以下の式を実行すると、全ての変数に 100 が代入される

<?php

$var1 = $var2 = $var3 = 100;

var_dump($var1);
var_dump($var2);
var_dump($var3);

/*
  実行結果

  int(100)
  int(100)
  int(100)
*/
?>


配列の場合は list() を使用する

<?php

list($var1, $var2, $var3) = [1, 2, 3];

var_dump($var1);
var_dump($var2);
var_dump($var3);

/*
  実行結果

  int(1)
  int(2)
  int(3)
*/
?>
広告を非表示にする