PHP mail() 函数冻结

PHP mail() 函数冻结

我遇到一个问题,/var/lib/php/session 的权限被覆盖,所以我无法再在 PHP 中创建会话变量。

我认为我的邮件功能也发生了同样的事情。邮件功能在 Linux 服务器中的什么位置,以便我可以对其进行 chmod 操作?


编辑

一些附加信息:

$ "This is a test" | mail -s "Testing 123" [email protected]
-bash: This is a test: command not found
Null message body; hope that's ok
postdrop: warning: mail_queue_enter: create file maildrop/111989.3781: Permission denied
postdrop: warning: mail_queue_enter: create file maildrop/112524.3781: Permission denied
postdrop: warning: mail_queue_enter: create file maildrop/113649.3781: Permission denied
postdrop: warning: mail_queue_enter: create file maildrop/114574.3781: Permission denied
postdrop: warning: mail_queue_enter: create file maildrop/115551.3781: Permission denied

chmod: changing permissions of `/usr/sbin/sendmail.postfix': Operation not permitted

chmod: changing permissions of `/usr/sbin/sendmail': Operation not permitted

答案1

mail() 函数可以做很多不同的事情,这取决于你配置它。例如,您可以将其指向外部 SMTP 服务器,如果是这种情况,那么您的本地系统上就无需触碰任何内容。

如果您没有更改默认设置,则说明您正在系统上运行一些邮件传输代理,但可能性很大。您实际上是在运行 sendmail,还是只是在运行一些具有与 sendmail 兼容的二进制文件的工具?我相信 Postfix 是 Centos 上的默认 MTA。不幸的是,我不确定假脱机文件夹的名称以及默认权限应该是什么。

如果没有其他人提供具体答案,那么我建议您快速设置一个与主系统类似的虚拟机,然后简单比较然后修复权限。

您还可以从命令行 shell 中测试一些东西。只需运行类似 的命令即可。echo 'test' | sendmail [email protected]

答案2

检查 php.ini 中设置的 sendmail_path 变量(默认情况下为:/usr/sbin/sendmail),该变量将由 php mail() 函数使用。

答案3

# /etc/postfix/post-install set-permissions

相关内容