【问题标题】:Procmail and PHP scriptProcmail 和 PHP 脚本
【发布时间】:2014-12-02 11:11:17
【问题描述】:

我正在使用 postfix 和 procmail。但是我对procmail和php有问题。 php-code /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";
?>

我的逻辑:

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"

我不明白为什么一个脚本运行而另一个脚本出错。

【问题讨论】:

  • 嗯,脚本不同吗?如果是这样,这就是为什么一个运行而另一个给出错误的原因。

标签: php procmail


【解决方案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 并执行相同的交付操作。也许事情仍然可以重构。

【讨论】:

    猜你喜欢
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    相关资源
    最近更新 更多