2012-09-11 6 views
9

私はstackoverflowや他の多くのWebサイトでアイデアを探していますが、これまでに何の効果もありませんでした。php mail()はfalseを返しますが、コマンドラインにはありません

私は専用のUbuntu Server(9.04 jaunty)を持っていますが、そこにapache2を使っていくつかのPHPウェブサイトを運営しています。私の問題は、mail()関数が機能しなくなったことです。しばらくして私はほとんどのメールにPEAR Mail Queueを使用していたので、mail()が動作しなくなったときは正確にはわかりませんが、OpenCartの設定ではまだ必要ですが、mail()私が何をしても偽を返す。だから、

<?php 
mail('[email protected]','test','test'); 
?> 

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

# sendmail 
[email protected] 
test message 

だから私はそれが問題を抱えているPHPそのものかもしれないと思ったので、私は、次のコマンドを実行してください:

# php -r "mail('[email protected]','test','test');" 

そしてそれはまた、何の問題もなく、電子メールを送信します!それで何ができますか?私はそれが何らかのパーミッションの問題かもしれないと考え始めました。おそらく、www-dataにスクリプトの実行に関するいくつかの問題があったかもしれません。私はこのスクリプトを実行することもできないので、これについてはまだ分かりません:

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

また、falseを返します!私はvisudoをのコマンドを実行して、念のために以下の行を追加しました:

www-data ALL=(ALL) ALL 

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

他に何を試すことができますか? sometingする必要があります!誰でも助けてくれますか?

+1

メールが失敗したときにシステムメールエラーログ(/ var/log/mailなど)にエラーが表示されていますか? –

+0

'mail()'を削除します。つまり、 'PhpMailer'を使って' SMTP'経由で配送させると、安全な場所にいます。 –

+0

'SYSERR(UID0):あなたは誰ですか?:許可が拒否されました。 'と、RunAsUserとTrusedUser' unknown user smmsp:Permission denied'の行のsubmit.cfファイルについて不平を言うエラーがたくさんあります。smmsp両方に設定されています。これでどうしたらいいですか? @ルイス – user1663164

答えて

0

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

といくつか他の人を。

私はエラーログを入力しました。Segmentation faultです。 2日後に問題が見つかりました。私はDebianシステムでExim4を使いましたが、apache2との組み合わせはセグメンテーション違反を出しました。私はExim4をPostfixに置き換えました。

しかし、あなたのケースでは、whoamiのようなexecを実行することはできず、そのパスを追うべきです。

メール機能が最終的にosになるので、execコマンドが機能するはずです!

+0

それでは、私はそれについて何をお勧めしますか?この種のパーミッションをPHPではどのように制御しますか? – user1663164

0

mail()関数を使用してphpMailer throw SMTPを使用してメールを送信できます。 コードおそらくメール機能を置き換えるためにphpmailerのを使用するopencartため、このextationを使用することができますだけでアイデア

here(http://phpmailer.worxware.com/) です。私はちょうどそれをテストしていないし、それは誰かにいくつかのアイデアを与えるかもしれないと思った。

+0

いいえ、OpenCartはmail() - 関数を使用していますので、残念ながら動作させる必要があります。そうでなければ、私はこれほど多くのことを気にしません。 – user1663164

+0

私は自分の答えを更新しました。誰かがオープンカートのためにext2を使ってphpmailerを使用したようです。これはあなたを助けないかもしれませんが、そこにはサーバへのアクセスがない人を助けることができます。 – Justin

2

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

+0

どこで確認できますか? – user1663164

+0

気にしない、見つけました。しかし、ファイルはほとんど同じですが、それは問題ではありません。他のアイデア? – user1663164

+0

php.ini.bakに名前を変更してapache php.iniを名前を変更し、cli php.iniをコピーしてチェックしてください。それはあなたの問題の範囲を絞り込んで調べます –

0

私の場合は、私が遊んでいたMagentoドッカーの画像で使用されたphp-fpmでした。 phpはプリロードされていました(設定あり)。

再起動後、新しい設定:how to restartまたはちょうどsudo killall php-fpmが選択されました。

関連する問題