2012-08-08 41 views
1

sendmail從瀏覽器中工作,但是當我做/usr/bin/php cron.php從命令行 然後它說SH:/ sendmail的:沒有這樣的文件或目錄

sh: /sendmail: no such file or directory... 

我甚至跑which命令,它向我表明sendmail是在/usr/sbin/sendmail以及sendmail_pathphp.ini是正確的。

爲什麼從命令行檢查根目錄下的sendmail

附加:我們可以在根目錄下添加一個sendmail別名(快捷方式)到sbin目錄嗎?

編輯:我被sendmail困住的原因是因爲標準郵件庫不尊重我的返回路徑。

回答

1

which命令的工作方式是檢查變量PATH指向的目錄中給定的可執行文件。變量PATH可以通過使用簡單命令(如export PATH=SOMETHING)將其更改爲任何所需的值,以便在需要時指向不同的東西。所以我想如果您的which命令指向/usr/sbin/sendmail從命令行運行時仍然cron.php沒有從那裏撿起它,那麼您的cron.php可能會在某處更改PATH的值,或者編碼出錯並且您的代碼正在調用sendmail使用絕對路徑。

首先,確保上面提到的事情是正確的。如果他們是,並且問題仍然存在,如你所猜,你可以create a soft link並使/sendmail指向/usr/sbin/sendmail

+0

我認爲你有一個有效的點,因爲我正在做chdir。我現在已經刪除了該行,併爲文件包含了dirname命令。我現在要再試一次。 – Khuram 2012-08-08 10:21:30

+0

嗨,我測試沒有chdir和所有文件都包含在dirname()中,我使用的庫是phpmailer,但問題沒有解決。 – Khuram 2012-08-08 10:26:15

+0

@Khuram'chdir'可能不是問題。看看'sendmail'被調用的地方,看看它是如何被調用的。就在它被調用之前,還要打印'PATH'的值,以確保一切正常。我把我的賭注放在調用'sendmail'的錯誤方式上而不是'PATH'受到影響 – 2012-08-08 10:30:48

相關問題