3

毎日のログを生成する Kohana フレームワーク (3.0.9) を使用しています。CRONがスクリプトを実行する前日にログファイルが作成された場合はメールしたいのですが、何日も試してみた後、PHP CLI modusでsafe_modeを延期する方法がわかりません。

Web 上でスクリプトを実行している場合、問題はありません。しかし、スクリプトを Plesk 9.5.2 サーバー (または root ユーザーとしてコマンドライン) で CRON タスクとして実行したいのですが、次のエラーが表示されます。

ErrorException [ 2 ]: dir(): SAFE MODE 制限が有効です。uid が 10001 のスクリプトは、uid 48 ~ APPPATH/classes/controller/ajax.php が所有する /var/www/vhosts/mydomain.com/subdomains/mysubdomain/httpdocs/application/logs/2011/01 へのアクセスを許可されていません [ 181 ]

Plesk コントロール パネルで SAFE MODE をオフにしました。これは Web リクエストに対しては正常に機能しますが、コマンド ラインまたは CRON タスクとしては機能しません。

次のコードを使用して、機能するかどうかをテストしています。

$d = dir(APPPATH.'logs/2011/01/');
echo "Handle: " . $d->handle . "\n";
echo "Path: " . $d->path . "\n";
while (false !== ($entry = $d->read())) {
   echo $entry."\n";
}
$d->close();

ディレクトリ APPPATH.'logs/' とディレクトリ APPPATH.'logs/2011' を読み取ることができますが、毎日のログ ファイルで毎月を表すディレクトリは常にエラーになります。

4

2 に答える 2

15

現在、次のようにUIからphpスクリプトの実行をスケジュールできます。

pleskスケジュールcronurlphpスクリプト

それでもコマンドラインからスクリプトを実行する必要がある場合は、PleskのPHPバイナリが次の場所に配置されていることに注意してください。

# 7.0
/opt/plesk/php/7.0/bin/php
# 5.6
/opt/plesk/php/5.6/bin/php
# 5.5
/opt/plesk/php/5.5/bin/php
# and so on

元の答え:

これは数か月前のことですが、Plesk、cron、PHPの使用中に問題が発生した次の人のために、ここに答えがあります。

PleskはcronをROOTとして実行しますが、デフォルトではセーフモードをオンにしてPHPも実行します。つまり、PHPを必要とするPleskでcronを設定すると、シェルやWebからは発生しない制限が発生します。 。

したがって、次のように、CLI/etc/php.iniオプションのオーバーライドを使用します。

/usr/bin/php -q -d safe_mode=Off /var/www/vhosts/path-to-your-php-file.php
于 2011-06-21T22:06:30.767 に答える
1

CLI用のphp.iniでsafe_modeを無効にしましたか?

次のコマンドを実行すると、このファイルの場所を見つけることができますphp --inisafe_modeこのファイルを検索し、行をに変更しますsafe_mode = Off

于 2011-01-26T15:11:23.800 に答える