如何设置PHP使用的shell?

时间:2013-06-07 09:41:30

标签: php

我在Linux上使用PHP作为apache模块。我还使用apparmor来保护系统。当我想用mail()函数为自己发送邮件时,我注意到php想要执行shell(在我们的情况下为/ bin / bash,因为/ bin / sh是一个符号链接),即使我设置了/ usr / sbin / sendmail在php.ini中。我不想允许(在apparmor中)apache / php可以执行shell。我只想让php直接运行sendmail包装器而不涉及shell。有可能吗?

我的另一个想法是编写一个“shell like”二进制文件,它将检查要执行的命令。在我看来,如果PHP不能跳过使用shell,然后使用一个包装器,甚至可以记录尝试执行不需要的东西等等,这是一个好主意(我也会用来记录UID,因为我有vhosts与不同的unix uid运行 - 这是计划)。但是在这种情况下,我只有一件事我不知道:如何设置PHP以使用给定的可执行文件作为shell?通常,在全局范围内,对于system()等函数也是如此。我试图在apache中使用SetEnv来设置SHELL变量,但它不起作用,PHP仍尝试使用默认的/ bin / sh ...

解释:我必须(不是我的节点等)在Linux上使用PHP mail()函数,它不是使用其他解决方案来发送邮件的选项,例如远程SMTP服务器,如果它意味着任何代码更改PHP脚本。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以运行本地smtp服务器(仅绑定到127.0.0.1!)并让php在那里发送您的邮件。这样您就不必调用任何shell,只需连接到本地服务器。

Configure PHP to use an SMTP server