php を /etc/aliases を使ってメールを受信すると起動させるようにすると、 file_put_contents が正常に動作しません。

ところが、webブラウザからURLにアクセスして、起動させると file_put_contents が正常に動作します。
なにか解決策に心当たりのある方、もしよろしければ教えていただけないでしょうか。

回答の条件
  • 1人1回まで
  • 登録:2008/12/09 02:36:18
  • 終了:2008/12/10 01:30:36

ベストアンサー

id:goodvn No.2

goodvn回答回数228ベストアンサー獲得回数182008/12/09 22:39:24

ポイント80pt

id:pahoo さんの回答に補足

PHP が実行されたときのパスに注意してください

ファイル名をフルパス(/tmp/hogehoge など)で書いて試してみてください

これでうまく行けば,きっと実行パスが違うのが原因なので,実行パスを気に掛けながら実装してみてください

id:shotaroh5663

ご回答ありがとうございます。

まさにパスに原因がありました。

おかげさまで助かりました。

chdir('/var/www/DIR');と打ち込みディレクトリを変えることで、無事に出力することができました。

2008/12/10 01:29:58

その他の回答(1件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/12/09 10:47:33

ポイント80pt

ブラウザ経由で実行させた場合と、/etc/aliases で実行(コマンドライン実行)させた場合とで、PHPの実行ユーザーが違うのではないでしょうか。そして、書き込み先のフォルダは、PHPをコマンド実行させた際のユーザーが書き込み権限を持っていないのではないでしょうか。

ご確認ください。


または、すでに$filenameが存在していて、権限の関係で上書きできないということはありませんか。

id:shotaroh5663

このような少ない情報であるにもかかわらず対応していただき、ありがとうございました。

2008/12/10 01:29:56
id:goodvn No.2

goodvn回答回数228ベストアンサー獲得回数182008/12/09 22:39:24ここでベストアンサー

ポイント80pt

id:pahoo さんの回答に補足

PHP が実行されたときのパスに注意してください

ファイル名をフルパス(/tmp/hogehoge など)で書いて試してみてください

これでうまく行けば,きっと実行パスが違うのが原因なので,実行パスを気に掛けながら実装してみてください

id:shotaroh5663

ご回答ありがとうございます。

まさにパスに原因がありました。

おかげさまで助かりました。

chdir('/var/www/DIR');と打ち込みディレクトリを変えることで、無事に出力することができました。

2008/12/10 01:29:58
  • id:shotaroh5663
    shotaroh5663 2008/12/09 02:51:28
    すべてのphpファイルは、/var/www/DIR に存在しています。
    このディレクトリ上のファイルに対して次のコマンドを入力しています。

    chown -R USER.users /var/www/DIR
    chmod -R 777 /var/www/DIR
  • id:pahoo
    > file_put_contents が正常に動作しません

    具体的にどういうエラーが出るのですか?
  • id:shotaroh5663
    shotaroh5663 2008/12/09 10:11:01
    コメントありがとうございます。
    具体的には、下記のようにvar_dumpの出力をファイルfoo.txtに書き込もうとするときに、
    ウェブブラウザからURLをクリックして動作させると、ファイルに書き込んでくれるのですが、
    メールを送信して、/etc/aliases から起動させると、ファイルに書き込んでくれません。

    ob_start();
    echo "structure:\n";
    var_dump($structure);
    $out = ob_get_contents();
    ob_end_clean();
    // ウェブブラウザから起動するときは書き込むし、メールから起動するときは書き込んでくれない。
    file_put_contents($filename, $out, FILE_APPEND);

    このような具合です。

この質問への反応(ブックマークコメント)

トラックバック

  • PHP の実行パス 緑茶は命の水 2008-12-16 09:47:04
    プログラムからファイルにアクセスする場合,ファイルの特定にはパスを使いますが,このパスの指定には,絶対パスと相対パスがあります 絶対パスの場合,その名の通り,絶対的なファ
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません