9

私はスタックオーバーフローや他の多くの Web サイトでアイデアを探し回っていますが、これまでのところ何もうまくいかず、もっと直接的な助けが必要です。

私は専用の Ubuntu サーバー (9.04 jaunty) を持っており、そこで apache2 を使用していくつかの PHP Web サイトを実行しています。私の問題は、mail() 関数が機能しなくなったことです。しばらく前から、ほとんどのメールに PEAR Mail Queue を使用しているため、いつ mail() が機能しなくなったのか正確にはわかりませんが、OpenCart のセットアップなどにはまだ必要ですが、mail()何をしても return false のままです。この単純なコードでさえ機能しません:

<?php
mail('mail@example.com','test','test');
?>

それで、私はすべてチェックアウトするphp.iniのSendmail-settingsを見てきました。これをコマンドラインで実行すると、正常に動作し、メールが送信されます。

# sendmail
mail@example.com
test message

php自体に問題があるのではないかと思い、以下のコマンドを実行してみます。

# php -r "mail('mail@example.com','test','test');"

また、問題なくメールを送信します。それで、それは何でしょうか?おそらく www-data がスクリプトの実行に何らかの問題を抱えているのではないかと考え始めました。このスクリプトを実行することさえできないため、これについてはまだわかりません。

<?php
echo exec('whoami');
?>

また、false を返します。visudoコマンドを実行し、念のため次の行を追加しました。

www-data ALL=(ALL) ALL

そして、ファイルのユーザーとグループの所有者をroot:rootからwww-data:www-dataに変更しましたが、まだ何もありません!

他に何を試すことができますか?何かあるに違いない!誰でも私を助けることができますか?

4

4 に答える 4

2

コマンドラインと Web サーバーは同じ php.ini を共有していません! コマンドラインとサーバー モジュールで使用されている php.ini を確認します。

于 2012-09-11T15:53:28.027 に答える
0

数週間前に同じ問題が発生しました。私は試した:

そして他のいくつか。

エラーログに「 。」というエントリがありましたSegmentation fault。2日後、問題が見つかりました。私はDebianシステムでExim4を使用しましたが、apache2との組み合わせでセグメンテーション違反が発生しました。Exim4をPostfixに置き換えたところ、うまくいきました!

ただし、あなたの場合、のようなexecを実行することはできず、whoamiそのパスを追求する必要があります。

メール機能は最終的にOSに到達するため、execコマンドが機能するはずです。

于 2012-09-11T15:11:56.427 に答える
0

mail() 関数を使用せずに phpMailer throw SMTP を使用して電子メールを送信できます。コードは こちら(http://phpmailer.worxware.com/)

この拡張機能を opencart で使用して、 phpmailerを使用してメール機能を置き換えることができる可能性があります。私はこれをテストしていないので、誰かにアイデアを与えるかもしれないと考えました.

于 2012-09-11T15:29:26.427 に答える