我在我的服务器上设置了一个电子邮件管道,它将电子邮件正文传递给要处理的脚本。脚本所做的部分工作是从我的phpbb3安装中交叉引用数据和电子邮件中的信息。为此,我包含了common.php,它填充了一堆数据库变量。
这个脚本已经工作了很长时间。它最近停止了工作。我怀疑它是由于我的主机升级PHP,因为我在同一时间遇到了其他问题。但是,我不确定这一点,因为我不知道剧本直到最近还没有运行。
我已将问题缩减为以下脚本:
$myFile = "a.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
fwrite($fh, getcwd());
fclose($fh);
include('./common.php');
$myFile = "a.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
fwrite($fh, ' success!');
fclose($fh);
如果我在浏览器中导航到该脚本,我会在' a.txt'中获得以下内容:
/home/mywebsite/public_html success!
如果我通过电子邮件管道运行脚本,我会在a.txt中获得以下内容:
/home/mywebsite/public_html
我还收到了退回的退回邮件:
pipe to |php -q -n /home/mywebsite/public_html/theScript.php
generated by myemail@mywebsite.com
local delivery failed
我一直在这方面工作太久了。希望有人对如何解决这个问题有一些了解。
答案 0 :(得分:1)
我终于自己想出来了。
这里是如何调用当前脚本(突然停止工作):
在cPanel中,设置一个电子邮件过滤器以匹配主题。然后,使用以下语法将内容传递给脚本:
php -q -n /path/to/script.php
该脚本不包含
#!/usr/bin/php -q
作为第一行。
我怀疑发生了PHP升级,这使得该方法停止运行。
我将管道语法改为简单:
/path/to/script.php
然后我将脚本的第一行更改为:
#!/usr/bin/php -q
此更改后,与我的过滤条件匹配的电子邮件会因原始问题中所述的错误而退回。新错误为permission denied
。我将PHP脚本的权限更改为755,一切都恢复正常!