簡體   English   中英

Wordpress.org服務器:PHP無法訪問SMTP端口,但telnet可以

[英]Wordpress.org server: PHP cannot access SMTP ports but telnet can

我一直在CentOS 6.6機器上設置Wordpress,在這方面我還很新。 新安裝,因此所有最新版本的httpd,php,mySQL和Wordpress。

現在,除了使用SMTP發送電子郵件外,其他所有內容都可以正常工作。 我在Wordpress中安裝了多個插件來配置SMTP,但是發送測試電子郵件始終會導致SMTP connect()失敗之類的錯誤。 我已經做得比確定我的憑據還好。

在命令行中,我嘗試了以下操作:

telnet smtp.gmail.com 25

openssl s_client -connect smtp.gmail.com:465

他們倆都毫無問題地將我連接到gmail的smtp。 由於繼續存在不允許Wordpress連接的錯誤,最終我決定將Wordpress排除在等式之外,然后在服務器上創建了一個測試php文件,其中包含以下代碼,該代碼對所有端口均返回“無響應”:

<?php
$host = 'smtp.gmail.com';
$ports = array(25, 465, 587);
foreach ($ports as $port)
{
$connection = @fsockopen($host, $port);

if (is_resource($connection))
{
    echo '<h2>' . $host . ':' . $port . ' ' . '(' . getservbyport($port, 'tcp') . ') is open.</h2>' . "\n";

    fclose($connection);
}

else
{
    echo '<h2>' . $host . ':' . $port . ' is not responding.</h2>' . "\n";
}
}

將上面的php腳本更改為www.gmail.com並添加端口80和443會巧妙地顯示80和443 ARE已打開,其余端口已關閉(這很有意義,因為我現在正在查看www服務器),因此該腳本似乎工作正常。

我猜想PHP本身必須存在一些問題,不允許我通過任何SMTP端口出局(因為我可以從cmdline遠程登錄到這些端口)

我無法弄清楚PHP中可能出現的問題。 任何人有任何指示如何解決這個問題?

找到我自己的答案了:)每當我嘗試從PHP訪問任何SMTP端口時,audit.log都會輸入條目,這是事實:SELinux是罪魁禍首。

暫時禁用SELinux使它再次工作:

echo 0 >/selinux/enforce

在證明有效之后,我使用以下命令重新啟用了SELinux:

echo 1 >/selinux/enforce

...最后,我發現此cmd將配置SELinux以允許通過apache / PHP進行SMTP:

setsebool -P httpd_can_network_connect on

最后! 我花了至少8個小時進行故障排除,為什么我可以使用Shell而不是WordPress發送郵件。 這解決了我的問題!

 $ sudo setsebool -P httpd_can_sendmail 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM