• ベストアンサー

空メールでPHPを起動

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回出ていることです。これが影響しているのかもしれません。 どなたか他の方法でも結構ですからお知恵をお貸しください。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

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

hjintao
質問者

お礼

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

hjintao
質問者

補足

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

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

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

hjintao
質問者

補足

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

回答No.1

コマンドをダブルクォートで囲んでみるのはどうでしょうか。私はPostfixでしたが似たような状況でこれで解決しました。 | "/usr/local/bin/php -q /usr/local/apache2/htdocs_test/htdocs/mail_action2.php"

hjintao
質問者

お礼

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

hjintao
質問者

補足

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

関連するQ&A