2013-08-20 34 views
0

我正在使用一些軟件,通​​過調用mail()來發送電子郵件,該函數通過register_shutdown_function調用。
這似乎工作了一段時間,但最近mail()已開始每次返回FALSE。從正常情況下調用mail()的調用成功。register_shutdown_function and mail()

是否有某種服務器設置或模塊可能導致此問題?
不幸的是,我的網絡託管服務對此沒有太大的幫助。

我使用PHP 5.3.26(apache2handler)具有以下擴展名:

核心,PDO,的Phar,反射,SPL,SQLite的,SimpleXML的,Zend的衛隊 裝載機,apache2handler,APC,bcmath時, bz2,calendar,ctype,curl,date, dba,dbase,dom,ereg,exif,fileinfo,filter,ftp,gd,geoip, gettext,hash,iconv,imagick,imap,intl,ionCube Loader,json,ldap , libxml,mbstring,mcrypt,mhash,ming,mysql,mysqli,openssl,pcre, pdf,pdo_mysql,pdo_sqlite,posix,pspell,session,shmop,soap, sockets,sqlite3,standard,suhosi N,sysvmsg,SYSVSEM,SYSVSHM,整潔, 標記生成器,WDDX,XML,XMLReader的,XML-RPC,XmlWriter的,XSL,拉鍊,zlib的

這裏

suhosin導致問題?

+0

通過普通郵件()調用發送電子郵件是否有效? – tholu

+0

是的。從普通上下文調用時,對mail()的調用會成功。 – Nils

+1

你能分享一些源代碼嗎? – tholu

回答

0

萬一其他人遇到這個問題:問題是由執行目錄不同於普通/ www目錄的不同上下文中調用shutdown函數引起的。解決方案是在呼叫mail()之前添加chdir('xxx')以更改回www目錄。

+0

'郵件()'不關心工作目錄。您可能有其他代碼嘗試加載文件或使用相對路徑執行命令。 –

+0

我不知道爲什麼,但這絕對是問題。我有一個測試用例,除了從函數內部調用mail()外,我什麼都不做。如果沒有chdir(),那麼失敗,使用chdir()它會起作用。我懷疑這可能與我的託管方的一些奇怪的安全設置有關,但我不確定。 – Nils