###前提・実現したいこと
概要:
マルチプロセス側でも、php.iniの設定を読み込みたい。
php.iniの設定が読み込まれていないため、 error_log()関数が使用出来ない。
###発生している問題・エラーメッセージ
my_main.phpに「exec関数を使用してマルチプロセスの非同期でmy_async.phpを実行する」処理を記述し、
my_main.phpにブラウザでアクセスしました。
問題無く my_async.php は実行されているようですが、
なぜか、my_async.phpではPHP関数のerror_log('テキスト')が使えません。
現在分かっている事:
my_async.php では、php.iniの設定が読み込まれていないようです。
my_async.phpにてini_set('error_log', 'パス')を使い、値を設定することはできました。
php.iniの全ての設定値をini_set()で設定しなおす事は出来そうですが、
骨が折れそうで途方に暮れております。助けて下さい。
###該当のソースコード
サーバー:centOSの階層
/var/www/html
└my_main.php
└my_async.php
php
1//ファイル名: my_main.php 2 3//マルチプロセス起動 4exec("nohup php -c '' my_async.php >/dev/null 2>&1 &"); 5 6//エラーログを出力 ※出力されます 7error_log('my_main.phpに書いたerror_logです。'); 8
php
1//ファイル名 my_async.php 2 3//エラーログを出力 ※出力されません。(助けて下さい。) 4error_log('my_async.phpに書いたerror_logです。');
###試したこと
- my_async.phpが動いているかを確認するために、テキストファイルを書き出せるかをテスト
→OK。 書き出されました。
- my_async.phpでini_get('error_log')を使用して、設定値が取れるかテスト
→NG。 設定値が取れませんでした。
- my_async.phpでini_setでパスを設定し、error_log()が使えるか確認
→OK。 使えました。
上記を試したコードは下記の通りです。
php
1//ファイル名 my_async.php 2 3//エラーログを出力 ※これが出力されない!! 4error_log('my_async.phpに書いたerror_logです。'); 5 6////////////////////////////////////////////////////////////////////////////// 7//上記にてerror_log()が使えない事に対する原因を追究する為、下記のコード試しました。 8////////////////////////////////////////////////////////////////////////////// 9 10 11//テキストファイルを出力 ※出力されます 12file_put_contents('/var/log/php/myLogBy_my_main.php', 'my_async.phpです'); 13 14// iniの設定を確認 15$path = ini_get('error_log'); 16file_put_contents('/var/log/php/myLogBy_my_main.php', $path); // 何も出力されない! 17 18$type = gettype($path); 19file_put_contents('/var/log/php/myLogBy_my_main.php', $type); // 'string'が出力される 20 21$length = strlen($path); 22file_put_contents('/var/log/php/myLogBy_my_main.php', $length); // '0'が出力される 23 24// iniの設定が読み込まれていないようなので、自分で設定したらどうなるか確認 25//値をセット 26ini_set('error_log', '/var/log/php/php_errors.log'); 27error_log('my_async.phpでini_setでパスを設定した後の出力テスト'); //出力される(^^) 28 29//念のために、ini_getで設定した値確認 30$path2 = ini_get('error_log'); 31file_put_contents('/var/log/php/myLogBy_my_main.php', $path2); // '/var/log/php/php_errors.log'が出力される 32
###補足情報(言語/FW/ツール等のバージョンなど)
ブラウザ:
Windows10 Google Chrome
サーバー情報:
CentOS release 6.9 (Final)
Apache/2.2.15 (Unix)
PHP 7.1.12
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/09 10:45
2018/01/09 10:50
2018/01/09 11:06