2017-07-27 74 views
1

因此,出於某種原因,我無法使用mail()PHP函數,也不能使用帶有SMTP的PHPMailer。所以尋找的選擇,我寫了一個簡短的shell腳本來發送帶有附件的電子郵件,內容如下:通過從php運行shell腳本發送郵件

#!/bin/bash 
echo "Some text $1 $2 $3" | mail -a "/path/to/attached/file.xlsx" -s "Subject text" [email protected] 

當我直接從終端上運行的文件,它完美的作品,並在郵件中正確地接收依戀和所有。

但是,當我嘗試從PHP運行,我有以下代碼:

shell_exec("bash /path/to/script $m1t $m2t $afl"); 

而且它不顯示任何錯誤,並且不會返回任何輸出,但郵件沒有發送。

我不能讓shell腳本通過PHP調用它來發送電子郵件嗎?或者我做錯了什麼?

感謝有關此事的任何幫助。

+0

也許[是這個幫助](https://stackoverflow.com/questions/20124327/php-shell-exec-command-is-not-working) – Yolo

+0

我在FreeBSD服務器上遇到了問題,其中'$ PATH '從PHP運行shell命令時未使用或未設置。嘗試通過PHP運行'which $ foo'來查看你的PHP shell進程是否可以找到程序。 – amphetamachine

+0

@amphetamachine我來看看。但是我不認爲這是問題,因爲當我運行其他腳本時(例如,在同一個shell文件中的'ls'),它完全符合了。 –

回答

0

對於紅帽企業Linux,CentOS,Fedora和其他Linux發行版的SELinux,您應該驗證Apache進程是否允許訪問sendmail。這可以通過登錄到服務器(SSH或打開本地主機是否在終端),並運行

getsebool httpd_can_sendmail 

當輸出httpd_can_sendmail --> off您可以通過

sudo setsebool -P httpd_can_sendmail on 

-P -flag品牌能不能做到它是永久性的,所以它在重新啓動後仍然有效。命令可能需要一段時間才能執行。