は悪い考えです。プログラムがファイルに書き込むことができる場合、Webサーバーはファイルに書き込むこともできます。これにより、誰かがWebサーバーを介してファイルを上書きする可能性があります。最高でも、データが上書きされないようにします。最悪の場合、リモートでコードが実行されます。
書き込み可能なファイルをWebサーバーディレクトリの外に置く方がよいでしょう。
<Parent directory>
<Place for writable files>
<Web server directory>
プログラムでは、Webサーバーから実行する場合、ファイルへのパスを指定するだけです。
シェルからそれを実行しているよりも少し異なるのcronから実行相対パス
$relitivePath = '/../writeDir';
$handle = fopen($_SERVER['DOCUMENT_ROOT'] . $relitivePath . '/logfile.csv');
フルパス
$fullPath = '/somedir/ParentDir/writeDir'
$handle = fopen($fullPath . '/logfile.csv');
。あなたが使用している環境は、あなたが完全なパスをリストアップしたり、環境を設定しなければならないときに、あなたが持っているときのように設定されていません。
$fullPath = '/somedir/ParentDir/writeDir'
$handle = fopen($fullPath . '/logfile.csv');
にssh'edすると、あなたの完全なパス
を取得するには、次のファイルがあるディレクトリに
CD。
pwdを実行すると、現在の作業ディレクトリのパスが出力されます。
上記のようにそのパスを使用してください。
プログラムでは、エラー報告をオンにすることをお勧めします。
また、cronから呼び出したプログラムをWebディレクトリに入れたくない場合もあります。
サービスプロバイダーには、cronの出力を電子メールで送信する方法があります。それはエラー報告に役立ちます。
これは、クローンジョブの問題か、PHPの問題ですか?自分で実行するとファイルは機能しますか? – Andreas
私は 'fwrite'を使ってWebサーバー上にあるファイルを編集できないと確信しています – gogaz
なぜ、この関数は@gogazになりますか? * permissions *の問題がなければ、 'fwrite()'を使ってWebサーバー上のファイルを編集して書きます。 –