- ベストアンサー
PHPのクーロン設定に関する要約
- <?phpのクーロン設定を行い、一時的なファイルを作成し、ファイルの所有権を変更する作業を紹介します。
- 作成したファイルに書き込みを行い、設定内容を保存します。
- 一時ファイルを本番のクーロン設定にコピーし、最後に一時ファイルを削除します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問内容が書かれていませんが、何が問題なのでしょう。
その他の回答 (1)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
$tmpfname = tempnam("/var/tmp", "auto_pbxrestart"); ~~ ~~ $cmd = "/usr/bin/sudo chown 777 ".TEMP_PATH; ~~ exec($cmd, $output, $return); ~~ $cmd = "/usr/bin/sudo chown apache::apache ".TEMP_PATH: ~~ exec($cmd, $output, $return); $handle = fopen($tmpfname, "w") 質問は書かれてないのだが、 ~~のくだりいらないですよ。 最初から、テンポラリファイルを作る命令があります。 https://www.php.net/manual/ja/function.tmpfile.php 基本、execに頼るのをやめれば、解決する問題がたくさんありそうですが。 ただし、 $cmd = "/usr/bin/sudo chown apache::apache ".TEMP_PATH: これも、同じでApache権限かApacheからアクセスできる権限で作ったファイルなら、 オーナーをapacheにする必要はないですよ。 すでに「書けた」のであれば、元々apacheからアクセス権限がある状態なので。 これは、不要です。 $cmd = "/usr/bin/sudo chown 777 ".TEMP_PATH; これも、間違い、chownはオーナー変更ですが、パラメーターがパーミッション値です。 https://www.php.net/manual/ja/function.chmod.php やりたいならそもそも専用の関数があるので、そちらを使うほうが try~catchでエラーが出た時理由などもデバッガーに出るので、 より早い解決ができるかと。 という事で、使っている命令がそもそも、 違うのを治してみませんか? あと、テンポラリでクーロンを作って、ユーザー権限で動くクーロンにポーリングさせれば、 移動だの更新だのっていらないですよ。 https://qiita.com/iganari/items/5a61ec93d989f7c77a2c こっちを使えばほとんどの問題は解決すると思います。 (そもそも、PHPから/etcなどにアクセスしてる限り、 ストレスたまるだけですよ)
お礼
ありがとうございます^_^