T K*_*T K 7 php file-permissions sendmail pipe user-permissions
我已经安装了sendmail,并希望将传入电子邮件发送到php。
每当我向服务器发送电子邮件时,都会收到一封包含错误消息的电子邮件:
无法打开输入文件:/root/fw/catcher.php 554 5.3.0未知邮件错误1
我认为具有许可的catcher.php错误是错误的,但我自己无法解决。
已安装Sendmail,并添加了别名:
root: "|/usr/bin/php /root/fw/catcher.php"
Run Code Online (Sandbox Code Playgroud)
权限(之后chmod 777;我尝试过chmod 777,chmod 755但都无法使用):
drwxrwxrwx 2 root root 4096 Jul 20 14:27 fw
-rwxrwxrwx 1 root root 45 Jul 20 14:27 catcher.php
Run Code Online (Sandbox Code Playgroud)
catcher.php(将行尾转换为Unix样式):
#!/usr/bin/php
<?php echo 'Test'; exit(0); ?>
Run Code Online (Sandbox Code Playgroud)
通过cli执行我的php文件效果很好。所有这些命令均有效:
/usr/bin/php /root/fw/catcher.php
/usr/bin/php7.3 /root/fw/catcher.php
php /root/fw/catcher.php
php7.3 /root/fw/catcher.php
Run Code Online (Sandbox Code Playgroud)
我认为sendmail的权限存在问题。
错误“无法打开输入文件”意味着由于某种原因无法读取该文件。
请按照以下步骤进行检查:
将行结尾转换为 Unix 风格
我不知道你如何检查这一点,但你可以尝试使用dos2unix 重做此操作,如此链接中所述
dos2unix catcher.php > newcatcher.php
Run Code Online (Sandbox Code Playgroud)
然后比较文件大小。
如果脚本以 UTF-8 编码,人们可能会想在开头包含 BOM。但实际上是“#!” 角色不仅仅是角色。它们实际上是一个神奇的数字,恰好由两个 ASCII 字符组成。如果您在这些字符之前放置某些内容(例如 BOM),那么该文件将看起来像是具有不同的幻数,这可能会导致问题。
该脚本将在 cli 上运行,因为您明确告诉它要使用哪个解释器:php或php7.3:
php /root/fw/catcher.php
php7.3 /root/fw/catcher.php
Run Code Online (Sandbox Code Playgroud)
要从文件开头删除BOM ,请尝试以下操作:
dos2unix catcher.php
Run Code Online (Sandbox Code Playgroud)
尝试将/root/fw/catcher.php作为 shell 脚本运行,而不使用 php 或 php7.3 可执行文件。从终端运行:
./root/fw/catcher.php
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |