Procmail和PHP脚本

Procmail和PHP脚本,php,procmail,Php,Procmail,我正在使用postfix和procmail。但是我对procmail和php有一个问题。 php代码/home/www/cron/mail_visirun.php运行时没有任何问题,但是如果日志文件上应该运行/home/www/cron/mail_selva.php,则会出现错误消息: 我的邮件文件: 我的php文件/home/www/cron/mail_selva.php: LOGFILE=/var/log/procmailrc.log VERBOSE=yes ATTACHinvoice=`e

我正在使用postfix和procmail。但是我对procmail和php有一个问题。 php代码
/home/www/cron/mail_visirun.php
运行时没有任何问题,但是如果日志文件上应该运行
/home/www/cron/mail_selva.php
,则会出现错误消息:

我的邮件文件:

我的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
echo "OK";
?>
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
echo "OK";
?>

我无法理解为什么一个脚本运行而另一个脚本出现错误。

错误在于您的PHP脚本无法读取其标准输入。Procmail检测到这一点,并认为传递不成功

如果脚本的计划是使用标准输入来做一些有用的事情,那么就这样做,错误就会消失

如果没有,可以更详细地解释一下(现在可能是在一个新问题中)您的脚本做了什么,以及当Procmail将当前消息导入脚本时您希望发生什么


文体评论:

  • 您想摆脱在backticks中疯狂无用地使用
    echo
    。将
    variable=`echo value`
    更改为
    variable='value'
    (如果值不需要引号,则可能不带引号)
  • 最终配方上的
    w
    标志很奇怪。我不知道你能期望它做什么。你的意图是什么
  • 重复的条件不是错误,而是有点问题。我会进行重构,以便在需要时只更新一个正则表达式

那么您仍然需要使用
^To*selva@domain.it
具有相同的交付操作。也许事情仍然可以重构。

那么,脚本是否有所不同?如果是这样,那么这就是为什么一个运行而另一个给出错误。