phpファイルを作成してphp
コマンドで実行したり、header.phpなどで同じことをするぶんには動きますし、
ヒアドキュメントではなくecho "OK" >> file
といったコマンドは実行出来ているようなのですが、
ヒアドキュメントを含めていると何故かファイルに出力されていません。
どうしたらいいのでしょうか?
functions.php
add_action( 'transition_post_status', function( $new_status, $old_status, $post ) { $result = shell_exec("echo 'OK.' >> ~/tmp/dev.log") ; // #~> きちんとファイルに出力される $result = shell_exec("cat - <<'EOF' >> ~/tmp/dev.log hoge hoge EOF ") ; }, 10, 3 );
*サーバーのSSHでファイル内容を確認するがヒアドキュメントを含んだコマンドは出力されていない。
cat ~/tmp/dev.log ~~~~~ OK.
追記
以下のPHPで再度試してみました。
add_action( 'transition_post_status', function( $new_status, $old_status, $post ) { global $ext; $var = date("D M j G:i:s T Y"); $result = shell_exec("cat - <<'EOF' >> /home/yuis/tmp/dev.log foo {$var} bar EOF ") ; }, 10, 3 );
~
をフルパスに変更し、OK
の出力を消しています。
結果、
同じくエラーも出力も出ませんでした。
また、
出力ファイルのタイムスタンプは更新されている様子ですか?
ですが、ls
で確認しましたが更新はされていません。
php のバージョンと WordPress のバージョン
php -v PHP 5.4.16 (cli) (built: Apr 12 2018 19:02:01) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies wp core version ; cd - 4.9.9
Web サーバーのエラーログに php のエラーが出ていたりしませんか?
エラーは書き込まれていないようです。
あなたの回答
tips
プレビュー