好的,我正在尝试创建一个使用PHP shell脚本的电子邮件记录器.我已经设置了CPanel来将电子邮件发送到我的脚本.我确信这一切都配置正确.但是我遇到了脚本问题,以及从shell运行它时的任何脚本.
这是一个例子.
#!/usr/local/bin/php –q
<?php
/* Read the message from STDIN */
$fd = fopen("php://stdin", "r");
$email = ""; // This will be the variable holding the data.
while (!feof($fd)) {
$email .= fread($fd, 1024);
}
fclose($fd);
/* Saves the data into a file */
$fdw = fopen("mail.txt", "w+");
fwrite($fdw, $email);
fclose($fdw);
/* Script End */
?>
Run Code Online (Sandbox Code Playgroud)
真的很简单吧?从STDIN读取并写入文件......我认为出了问题,因某些原因无法读取STDIN.托管服务提供商允许它,allow_url_open和allow_url_include都打开.
通过SSH执行脚本时,我收到以下错误:无法打开输入文件:âq
所以我再次认为那是剧本告诉我的,那是从STDIN无法读取的
所以我尝试了一个简单的脚本.
#!/usr/local/bin/php –q
<?php
echo 'Hello World';
?>
Run Code Online (Sandbox Code Playgroud)
同样的事情:无法打开输入文件:âq
所以看来PHP程序告诉我它无法打开脚本?该脚本位于$ HOME/mail/forward(CHMOD 755),脚本本身是CHMOD 755,文件mail.txt是CHMOD 755我真的很难过.
小智 8
在搜索 \xe2\x80\x9c 的解决方案时,我登陆此页面无法打开输入文件\xe2\x80\x9d。这是我对这个错误的 2 美分。
\n\n我遇到了同样的错误,因为我在 php 文件路径中使用参数,如下所示:
\n\n/usr/bin/php -q /home/**/public_html/cron/job.php?id=1234\nRun Code Online (Sandbox Code Playgroud)\n\n但我发现这不是正确的方法。正确的发送参数的方式是这样的:
\n\n/usr/bin/php -q /home/**/public_html/cron/job.php id=1234\nRun Code Online (Sandbox Code Playgroud)\n\n只需将其替换"?"为空格即可" "即可。
你有没有尝试过:
#!/usr/local/bin/php
Run Code Online (Sandbox Code Playgroud)
即没有-q部分?这就是错误消息"无法打开输入文件:-q"的意思.php如果它看起来不像一个选项的第一个参数是要执行的PHP文件的名称,并且-q只是CGI.
编辑:一些(非相关)提示:
?>.事实上,通常最好不要这样做.STDIN为fopen("php://stdin", "r").您可以使用它而不是"php://stdin"第二次打开:$fd = STDIN;| 归档时间: |
|
| 查看次数: |
82138 次 |
| 最近记录: |