Php 带后缀别名和MySQL的管道

Php 带后缀别名和MySQL的管道,php,postfix-mta,aliases,Php,Postfix Mta,Aliases,我正在尝试将收到的电子邮件重定向到php脚本的特定电子邮件地址。我正在使用Postfix,地址和域信息存储在MySql中。由于我认为管道无法从mysql表中完成,因此该地址在表中与系统别名配对: 在/etc/别名中: #Other aliases php_mail_handler: "| /usr/bin/php -q /home/mysite/htdocs/mail_handler.php" 由于/var/log/mail.info包含以下内容,这似乎在一定程度上起作用: Jul 17 1

我正在尝试将收到的电子邮件重定向到php脚本的特定电子邮件地址。我正在使用Postfix,地址和域信息存储在MySql中。由于我认为管道无法从mysql表中完成,因此该地址在表中与系统别名配对:

在/etc/别名中:

#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=<myaccount@gmail.com>, size=1476, nrcpt=1 (queue active)
Jul 17 14:53:30 mysite postfix/local[21981]: 39F726888003: to=<php_mail_handler@localhost>, orig_to=<php@mysite.com>, 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)
Jul 17 14:53:29 mysite后缀/qmgr[21974]:39F726888003:from=,size=1476,nrcpt=1(队列活动)
7月17日14:53:30 mysite后缀/local[21981]:39F72688003:to=,orig_to=,relay=local,delay=0.95,delays=0.28/0.01/0/0.66,dsn=2.0.0,status=sent(发送到命令:/usr/bin/php-q/home/mysite/htdocs/mail_handler.php)
但是,php脚本从不执行(它将时间戳和stdin上的任何内容写入日志文件)。当从命令行或通过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中指定了错误日志

非常感谢,


Mat

您是否尝试在命令行中使用用户nobody执行脚本

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

然后在运行测试时尝试使用现有电子邮件地址,您可能会在发件人电子邮件中返回部分错误。

我现在尝试使用“nobody”执行,这显然就是错误所在,因为由于权限错误,无法打开日志文件。不过,我的日志文件及其目录是chmod 0777。我可以做些什么来解决错误?感谢您的帮助。您可以尝试登录/tmp,创建的文件归那里的创建者所有,至少用于调试。对于真正的长期解决方案,您必须找到在目录及其父目录上具有足够(请不要777)权限的位置(可能需要所有父目录上的x权限)