2011-08-01 34 views
1
テストのため

を、のはinput.PHPは)幹部(によって呼び出され、この:渡す引数

<?php 
{ 
$TO = "[email protected]"; 
$FROM = "[email protected]"; 
$SUB = "Yadda"; 
$BODY = "This is a test"; 
exec("/usr/bin/php /xxx.yyy.net/TESTS/sendit.PHP $TO $SUB $BODY $FROM > /dev/null &"); 
echo "DONE"; 
} 
?> 

そしてsendit.PHPのように見えるこの

<?php 
$to  = $argv[1]; 
$subject = $argv[2]; 
$message = $argv[3]; 
$headers = 'From: '.$argv[4]. "\r\n" . 
'Reply-To: '.$argv[4]. "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
?> 
のように見えるとしましょう

ブラウザでinput.PHPを開くと、EONE DONEメッセージが表示されますが、テスト電子メールは送信されません。私のコードに何が問題なのですか?ありがとうございました。

+0

1)sendit.PHPに何かをエコーアウトして出力をファイルに入れたら、それはありますか? 2)なぜあなたはエグゼクティブをやっていますか?なぜsendit.PHPを直接呼び出さないのですか? – afuzzyllama

+1

/dev/nullの代わりにファイルに書き込んでみると、エラー(実際にはすべての出力)がブラックホールに入り込まないようになります。ファイルに書き込むと、より多くの情報が得られます。次に、ファイルがここに記載されているものを公開します。 –

答えて

3

エラー情報がなければ、私はこれは全体の問題であるかどうかわからないんだけど、私はこれで始めたい:で読み取るよう

引数は、スペースで区切られています。次のコードは次のように

/usr/bin/php /xxx.yyy.net/TESTS/sendit.PHP $TO $SUB $BODY $FROM > /dev/null & 

はあなたの例で実行されている:

/usr/bin/php /xxx.yyy.net/TESTS/sendit.PHP [email protected] Yadda This is a test [email protected] > /dev/null & 

$argv[3] == 'This'$argv[4] == 'is'を作ること。

+1

これはそうかもしれないと思います。彼が何を見つけるのか不思議。また@Johnwhitneyが文字をエスケープすることを覚えておいてください。だからあなたが '' Yadda This \ 'が\ "a test"などであるとき – Luke

1

デバッグなしでは、誰もあなたに答えを与えることができないと思います。

* nixは大文字と小文字が区別されますです。だから/xxx.yyy.net/TESTSなどが実際に正しい場合、が正しくと綴られていることを確認する必要があります。

また、私はすべてを/dev/nullに送信することはお勧めしません。単に/usr/bin/phpが別の設定を使用していた可能性があります。(これまで私に起こっていた)crontabでスクリプトを実行したときに思ったように動作しませんでした。

さらに詳しい情報が必要です。 PHPのログをチェックし、ターミナルからスクリプトを実行するときにそのスクリプトがあなたに与えるものを見てください。

+0

ファイルに書き込むために何を追加しなければなりませんか?私は正しい道を持っている。 – johnwhitney

+0

@joshwhitney '/xxx.yyy.net/TESTS/sendit.PHP $ TO $ SUB $ BODY $ FROM>/dev/null'を実行するのではなく、' /xxx.yyy.net/TESTS/sendit .PHP $ TO $ SUB $ BODY $ FROM 2>&1/var/log/php_emailer.log'これは出力を '/ var/log/php_emailer.log'のファイルにリダイレクトします。 – Luke

+0

何も記録されていません。 – johnwhitney