2011-07-17 24 views
2

我想獲得傳入電子郵件到重定向到PHP腳本的特定電子郵件地址。我正在使用存儲在MySql中的地址和域信息的Postfix。因爲我相信管道不能從MySQL表完成後,該地址表中搭配一個系統別名:與postfix別名和MySQL管道

在/ etc/aliases中:

#Other aliases 
php_mail_handler: "| /usr/bin/php -q /home/mysite/htdocs/mail_handler.php" 

這似乎是工作在一定程度上作爲/var/log/mail.info包含以下內容:

Jul 17 14:53:29 mysite postfix/qmgr[21974]: 39F726888003: from=<[email protected]>, size=1476, nrcpt=1 (queue active) 
Jul 17 14:53:30 mysite postfix/local[21981]: 39F726888003: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=0.95, delays=0.28/0.01/0/0.66, dsn=2.0.0, status=sent (delivered to command: /usr/bin/php -q /home/mysite/htdocs/mail_handler.php) 

然而,PHP腳本根本不會執行(寫入時間戳和任何標準輸入到一個日誌文件)。該腳本在從命令行或通過apache調用時起作用。它的代碼如下:

<?php 

$f = fopen('php_handler_log.txt','a+'); 
$data = file_get_contents("php://stdin"); 
fwrite($f,date('Y-m-d h:i:s').': '.$data."\n"); 
fclose($f); 

?> 

有沒有人有任何想法,爲什麼它可能不工作,甚至如何調試呢?由於在php的錯誤日誌中沒有顯示錯誤,所以我在CLI的php.ini中指定了錯誤日誌。

非常感謝,

回答

1

你嘗試與用戶nobody在命令行中執行腳本?

su -c "/usr/bin/php -q /home/mysite/htdocs/mail_handler.php" nobody 

然後嘗試運行測試時要使用現有的電子郵件地址,你就可能得到回發件人的電子郵件中的錯誤的一部分。

+0

我現在試圖使用'nobody'來執行,這顯然是錯誤所在,因爲由於權限錯誤而無法打開日誌文件。我的日誌文件,但它的目錄和它的目錄是chmod 0777.我能做些什麼來解決這個錯誤?謝謝你的幫助。 – matfr

+0

您可以嘗試登錄/ tmp,創建的文件由創建者擁有,至少用於調試。對於一個真正的長期解決方案,你必須在目錄和他的父母身上找到足夠的(並且沒有777)權利的地方(也許需要在所有父母目錄中都有x權限) – regilero