前天測試出在64位系統下不能發送激活郵件的bug
打出error_msg:為permission deny
調試搜索了半天,沒有結果;網上主要說的是
fsockopen被關閉啊,用pfsockopen,或者stream_socket_client()來代替
都試過不行;
因為在window下這幾個函數都沒有問題,所以想到是linux的 的問題,這個東東困擾過好幾次了,以后碰到問題請首先想到這個;
既然默認開啟了肯定有他的好處,不能關selinux,就搜索:selinux+smtp
找到了答案,selinux果然是不允許http來連接網絡的,執行如下命令:
setsebool -P httpd_can_network_connect=1
即可發送郵件了,看來得好好看看selinux這個鬼東西了。
詳情參考:
https://www.vbulletin.com/forum/showthread.php/217997-smtp-mail-and-SElinux-in-enforcing-mode
To allow PHP/Apache to connect to port 25 issue the following commands as root:
setsebool -P httpd_can_network_connect=1
To allow PHP mail() to work issue the following command as root:
setsebool -P httpd_can_sendmail=1
今天2012-04-19
又碰到服務器不能發送郵件的問題了,服務器部署到電信機房后。
SMTP Error: Could not connect to SMTP host.
找了半天沒有發現問題所在,重啟了httpd,就好了,實在太詭異了,
按理昨天關閉服務器在機房才開的機,httpd也算是重啟了的。
先記住,重啟httpd可不是神馬好方法
setsebool -P httpd_can_network_connect 1 SELINUX=disabled 執行這兩條命令之後 再進行測試一下. 第一條:設置httpd可以連接網絡 第二條:關閉SELINUX
