5

PHP のメール機能が Web ブラウザー (つまり apache) 経由で呼び出されたときに失敗する理由を理解しようとしていますが、コマンド ラインから同じスクリプトを実行できます。

php -f mailtest.php

これは私のクライアントの Fedora サーバーの 1 つなので、完全には把握していませんが、何かを変更する必要がある場合に備えて、ルート アクセス権を持っています。

php.ini から:

sendmail_path = /usr/sbin/sendmail -t -i

これが問題になるかどうかはわかりませんが、/usr/sbin/sendmail は /etc/alternatives/mta へのシンボリック リンクであり、これは /usr/sbin/sendmail.sendmail へのシンボリック リンクです。FWIW apache ユーザーは sendmail を実行する権限を持っています (コマンドラインから sendmail を直接テストしました)。

OS: Fedora Core 7 Linux (kernel 2.6.23.17)  
Apache: 2.2.8  
PHP: 5.2.6

ここで何か助けていただければ幸いです。

4

4 に答える 4

23

問題を見つけました。SELinuxは、apacheがsendmailを使用できないようにしていました。診断するために、私は使用しました

$ sestatus -b | grep sendmail  
httpd_can_sendmail                   off

次に、実際に問題を修正するには:

$ restorecon /usr/sbin/sendmail
$ setsebool -P httpd_can_sendmail 1

詳しくはこちらをご覧ください。

于 2009-09-23T18:45:24.003 に答える
0

これは、StackOverflow での最初の回答です。:o

だから私はあなたと同じ問題を抱えていました、マット!OpenSuse を使用しています。そのpostfix check結果、

postfix/postfix-script: warning: not owned by group maildrop: /usr/sbin/postqueue
postfix/postfix-script: warning: not owned by group maildrop: /usr/sbin/postdrop
postfix/postfix-script: warning: not set-gid or not owner+group+world executable: /usr/sbin/postqueue
postfix/postfix-script: warning: not set-gid or not owner+group+world executable: /usr/sbin/postdrop

だから私は次のコマンドを実行しました:

# my postfix user is postfix and postfix group is maildrop
sudo chown 'postfix:maildrop' /usr/sbin/post{drop,queue}
sudo chmod g+s /usr/sbin/post{queue,drop}

次に、すべてが正常に機能するかどうかをテストするために、ブラウザから単純な PHP スクリプトを実行しようとしました: (abc@gmail.com にメールを送信する場合)

<?php
$ret = mail('abc@gmail.com', 'subject', 'message');
if ($ret === true)
  echo 'Success'.PHP_EOL;
else
  echo 'Error'.PHP_EOL;

それでいいです!この方法で問題が解決することを願っています

于 2016-10-26T11:52:58.120 に答える
0

ユーザー権限エラーですか?あなたのアカウントと PHP スクリプトの実行に使用するアカウントは、異なる権限を持っている可能性があります。

于 2009-09-23T02:06:59.403 に答える
0

Apache の error_log に何かありますか? PHP は apache モジュールまたは CGI バイナリとして実行されていますか?

編集:うーん...エラーログには何もありません。mail(...)戻る呼び出しは何ですか?メールログに興味深いものはありますか? これは MTA によって異なります。多くの場合、/var/log/maillog

EDIT 2:safe_modeオンになっていて、mail()関数のadditional_parametersを使用していますか?

于 2009-09-23T00:19:35.737 に答える