我有一個用於處理收到的電子郵件的簡單腳本。以下是測試場景:PHP腳本無法使用電子郵件管道向文件寫入
A.腳本功能是發送一封電子郵件,指出在管道地址收到一封電子郵件。
通過瀏覽器-tested - 成功
通過CLI -tested - 成功
-tested通過管道 - 成功
B.腳本函數解析和寫入文件到文件夾,發送電子郵件指示電子郵件收到管道地址
- 瀏覽器測試 - 寫入文件和發送電子郵件。
- CLI測試 - 寫入文件和發送電子郵件。
- 通過管道測試 - 文件未寫入,但發送電子郵件。
我已將腳本簡化爲讀取和寫入管道消息的基本功能。我懷疑這個問題是一個許可問題,但我找不到任何支持證據。
我不熟悉CLI,但可以執行一些任務。我不知道在哪裏查找管道方案的日誌文件。
在所有測試的情況下,管道工作得很好。這是被管道調用時失敗的簡化代碼:
#!/usr/bin/php -q
<?php
/* Read the message from STDIN */
$fd = fopen("php://stdin", "r");
$email = ""; // This will be the variable holding the data.
while (!feof($fd)) {
$email .= fread($fd, 1024);
}
fclose($fd);
/* Saves the data into a file */
$fdw = fopen("/my/folder/mail.txt", "w");
fwrite($fdw, $email);
fclose($fdw);
/* Script End */
感謝您的任何幫助。
修改代碼來:通過電子郵件發送
#!/usr/bin/php -q
<?php
/* Read the message from STDIN */
$email = file_get_contents('php://stdin');
/* Saves the data into a file */
$fdw = fopen("/Volumes/Cobra/Sites/email/mail.txt", "w+");
if (! $fdw) {
error_log("Unable to open mail.txt for output.", 1, "[email protected]", "From: [email protected]");
} else {
fwrite($fdw, $email);
}
fclose($fdw);
/* Script End */
的錯誤消息。怎麼辦?管道調用腳本運行的用戶是什麼?
啓用錯誤日誌記錄和記錄所有的錯誤,包括警告和注意事項。然後在調用管道後檢查錯誤日誌。它向您顯示您的錯誤。如果您不明白錯誤信息,請將它們添加到您的問題中,並詢問您不瞭解的內容。 http://php.net/error-reporting – hakre
請原諒我的無知......我有錯誤報告,但是當我通過瀏覽器測試時,我的錯誤不會發生。我有一臺運行雪豹服務器的Xserve。我看到的唯一日誌文件是針對網站的。有什麼我可以查看的PHP日誌? – vmaxheli
是的PHP有它自己的日誌記錄 - 如果你配置PHP錯誤日誌記錄(請參閱我的prev評論中的鏈接,滾動一下,所有與包括日誌記錄在內的錯誤處理相關的php ini設置都在該頁面上)。配置它,然後你可以檢查錯誤日誌。 – hakre