プロが教えるわが家の防犯対策術!

お世話になります
qmailの.qmailを変更し空メールをトリガーにphpを起動させ
さまざまな処理を行いたいと考えています!
次のようなテストをしたのですが、なぜかfwrite()が動いてくれません

test1の「aaa.php」 - 成功
はじめににmb_send_mail()を書いて空メールを送ることに成功しました。

test2の「aaa.php」 - 失敗
次にfwrite()を書いてtest2.txtが作れるか試してみたのですが出来ませんでした。

なぜ、test2.txtが作れないのかわかる方にご教授願いたいです。
なにとぞよろしくお願いいたします

・test2の「aaa.php」を直接ブラウザで参照すると成功します。
・test2.txt及び下層フォルダの属性を777にしてみましたが失敗します。
・test2の「aaa.php」にchmod("test2.txt",0777)を加えましたが失敗します。
・is_writable()でtest2.txtを調べるとfalseが帰ってきているようです(成功しているmb_send_mail()を使って検証)

(.qmail)---

| /usr/bin/php /var/www/vhosts/Mydomain/httpdocs/aaa.php
#mb_send_mail()は成功するのでここの設定は問題ないと思われます


(test1の「aaa.php」 - 成功)---------

function Sendmail($title,$body,$to,$from_name,$from_email)
{
mb_language('Ja');
mb_internal_encoding('utf-8');
$mailfrom='From:'.mb_encode_mimeheader($from_name).'<'.$from_email.'>';
mb_send_mail($to,$title,$body,$mailfrom);
}

Sendmail('mailtest','test','test@Mydomain.com','test','test@Mydomain.com');



(test2の「aaa.php」 - 失敗)---------

$test = "test";
$filename = "test2.txt";
//chmod($filename, 0777);
$handle = fopen($filename, 'w+');
fwrite($handle, $test);
fclose($handle);

A 回答 (2件)

permissionがないんじゃないですかね。



ini_set("error_log", "/tmp/err.log");
ini_set("display_errors", 0);

とかを最初に書いておいて、エラーログを確認してみるといいんじゃないですかね?
    • good
    • 0
この回答へのお礼

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

上記の記述をPHPにし、SSHにてサーバrootのtmpを参照しましたが
err.logは生成されていないようでした

error_reporting (E_ALL);
ini_set(“display_errors”, 0);
ini_set(“log_errors”, 1);
ini_set(“error_log”, “/tmp/phperr.log”);

を試しましたがだめでした。。謎です。。

お礼日時:2009/02/24 21:25

恐らくパーミッションの問題だと思いますよ。



サーバーの環境にもよるので一概に言えませんが、test2.txt
を書き込むフォルダまたはその上位フォルダを666にしてもダメですか?

/usr/bin/php /var/​www/vhosts/Mydomain/httpdocs/aaa.php
を起動するオーナー情報を調べてみましょう。
    • good
    • 0
この回答へのお礼

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

http://www.documents.daoffice.com/faq/06319.html

を参照に、SSHからオーナー情報をpopuserに変更しましたが
ファイルは生成されませんでした。。

質問で「下層」と書きましたが、上層のまちがいでした
phpまでにたどり着くまでのパーミッションを777及び666にしましたが
だめでした

お礼日時:2009/02/24 21:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!