我正在使用postfix和procmail。但我有procmail和php的问题。
php代码/home/www/cron/mail_visirun.php
运行没有任何问题,但如果在日志文件上运行/home/www/cron/mail_selva.php
则会出现错误消息:
我的procmail文件:
我的php文件/home/www/cron/mail_selva.php
:
LOGFILE=/var/log/procmailrc.log
VERBOSE=yes
ATTACHinvoice=`echo /home/dok/dispo/RGein`
ATTACHselva=`echo /home/dok/dispo/Selva`
:0
* ^From:.*visirun
| /usr/bin/php /home/www/cron/mail_visirun.php
:0c
* ^To.*invoice@domain.it
! Rechnung@domain.it
:0
* ^To.*invoice@domain.it
| munpack -q -C $ATTACHinvoice
:0c
* ^From:.*selva
! info@domain.it
:0c
* ^From:.*selva
| munpack -q -C $ATTACHselva
:0
* ^From:.*selva
| /usr/bin/php /home/www/cron/mail_selva.php
:0
* ^To.*selva@domain.it
| /usr/bin/php /home/www/cron/mail_selva.php
:0 w
! hannes@domain.it
php文件/home/www/cron/mail_selva.php
:
<?php
echo "OK";
?>
我的logile:
procmail: Executing "/usr/bin/php,/home/www/cron/mail_selva.php"
procmail: Error while writing to "/usr/bin/php"
procmail: Assigning "LASTFOLDER=/usr/bin/php /home/www/cron/mail_selva.php"
我无法理解为什么一个脚本运行而另一个脚本出错。
答案 0 :(得分:1)
错误是您的PHP脚本无法读取其标准输入。 Procmail检测到这一点,并认为交付失败。
如果计划是让脚本对其标准输入做一些有用的事情,那就这样做,错误就会消失。
如果没有,也许可以更详细地解释一下(可能在现在的一个新问题中)你的脚本做什么以及当Procmail将当前消息输入其中时你希望发生什么。
文体评论:
echo
。将variable=`echo value`
更改为variable='value'
(如果值不需要引号,则可能没有引号)。w
标志很奇怪。我不确定你的期望是什么。你的意图是什么?:0
* ^From:.*selva
{
:0c
! info@domain.it
:0c
| munpack -q -C $ATTACHselva
:0
| /usr/bin/php /home/www/cron/mail_selva.php
}
然后,你仍然坚持使用相同的投放操作^To.*selva@domain.it
。也许事情仍然可以重构。