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

CentOS 4.5、Apache 2.0.53、PHP 5.2.4+qmailで空メールのシステムを開発中ですが、Could_not_open_input_fileのエラーが出てPHPのプログラムが起動されません。
システムとしてはから空メール宛先用のユーザー321を追加し、/home/321/の.qmailを
| /usr/local/bin/php -q /usr/local/apache2/htdocs_test/htdocs/mail_action2.php
としてパーミションを600、所有者を321、stickyビットを立てています。ディレクトリー321も321所有で権限は700です。
呼ばれるmail_action2.phpはテスト用に
#!/usr/local/bin/php -q
<?php
$fp = @fopen("/tmp/test.txt", "w");
$size = fwrite($fp, "xxx");
fclose($fp);
?>
としています。所有者は321、権限は604、これもstickyビットを立てました。ディレクトリhtdocsは開発者所有、705の権限です。
これで321に空メールを送ると何も返答がなく、maillog上に
greylist[31334]: IP nnn.nnn.nnn.nnn OK - accepting
...
qmail: 1xx6.8xx4 delivery 1949: deferral: Could_not_open_input_file:_/usr/local/apache2/htdocs_test/htdocs/mail_action2.php_/
qmail: 1xx6.8xx5 status: local 0/10 remote 0/20
qmail: 1xx3.8xx0 starting delivery 1950: msg 1xx9 to local 321@abc.com
qmail: 1xx3.8xx9 status: local 1/10 remote 0/20
qmail: 1xx3.8xx9 delivery 1950: deferral: Could_not_open_input_file:_/usr/local/apache2/htdocs_test/htdocs/mail_action2.php_/
qmail: 1xx3.8xx9 status: local 0/10 remote 0/20
と出ます。(文字数の関係からかなり省略しています。)
mail_action2.phpは実行されず、/tmp/test.txtは作成されません。
ひとつ気になるのがSPAM対策としてgreylistを使っているのですが、多分このせいでCould_not_open_input_fileが2回出ていることです。これが影響しているのかもしれません。
どなたか他の方法でも結構ですからお知恵をお貸しください。

A 回答 (3件)

コマンドをダブルクォートで囲んでみるのはどうでしょうか。

私はPostfixでしたが似たような状況でこれで解決しました。

| "/usr/local/bin/php -q /usr/local/apache2/htdocs_test/htdocs/mail_action2.php"

この回答への補足

早速のご回答ありがとうございます。
今、別件で手がとられてしまってすぐに対応できないのですが時間が出来次第、やってみます。

補足日時:2009/07/22 12:00
    • good
    • 0
この回答へのお礼

結局は改行コードの問題だったのですが、LFだと信じ込んでいました。
言われたようにダブルクォートで囲んで見たら、エラー内容が
No_such_file_or_directory/
になったので、やっと気が付いた次第です。
この回答が無かったらずっと信じ込んだままでした。
本当にありがとうございました。

お礼日時:2009/07/23 20:11

.qmailの編集はどうやってますか


Windowsで編集してFTPなら改行コードがそのままになってる可能性がありますが
(mail_action2.php_の最後の_が\rかもと思いました)

この回答への補足

WindowsXP上で NoEditorで改行コードをLFにし、NextFTPでアップロードしています。今、NextFTPの設定を見たら「ホスト改行コード」の指定が「自動」になっていたのでLFにしてやって見ます。

補足日時:2009/07/22 12:06
    • good
    • 0
この回答へのお礼

大当たりでした。
NoEditor と NextFTP だけで安心していたのですが、saintandreさんの回答の通りダブルクォートをつけてやってみたら、No_such_file_or_directory/にエラー内容が変わったので、ひょっとしてと思って
cat -v /home/321/.qmail
を実行してみたら
^M
が鎮座していました。
dos2unix
で変換して権限等を設定しなおしたらすんなり通りました。
ありがとうございました。
感謝感激です。
(ただgreylistの関係からか3回?実行されます。)

お礼日時:2009/07/23 19:53

なんとも言えませんが、sudoなどと連携してみてはどうでしょう?

この回答への補足

すいません。sudoと連携というのがちょっと具体的なイメージが湧かないのですが...

補足日時:2009/07/22 12:07
    • good
    • 0

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