我正在设置一个新的 Web 服务器。我在 ubuntu 16.04 上安装了 NGINX 和 php-fpm。除了一件事之外,一切都运行良好:经过 2-3 天的正确运行,PHP 无法运行任何外部系统命令。我说的“系统命令”是什么意思?例如,当我使用参数“whoami”运行函数 shell_exec 时
echo shell_exec('whoami');
我得到以下
警告:shell_exec():无法执行“whoami”
php 脚本尝试执行的每个 Linux 命令都会发生这种情况
当我尝试使用 mail() 函数发送邮件时,我收到类似的错误
警告:mail():无法执行邮件传送程序“/usr/sbin/sendmail -t -i”
仅当我从浏览器运行 PHP 脚本时才会发生这种情况。如果我尝试从终端运行它,如下所示
sudo -u www-data php /path/to/my/script.php
那么一切正常。
再次强调:该问题仅在正常运行一段时间后出现,并在 VDS 重启后消失(一段时间)。它仅在我从浏览器运行脚本时出现,这意味着它由 NGINX 提供服务。
请帮助我找到解决问题的方法。
PS 日志:Php 错误日志
[27-Aug-2016 04:19:37 Europe/Moscow] PHP Fatal error: Uncaught Error: Call to a member function is_logged() on null in /home/serv/www/templates/page_parts/header_tpl.php:6
Stack trace:
#0 /home/serv/www/templates/index_tpl.php(9): require()
#1 /home/serv/www/php_classes/templater_class.php(116): include('/home/serv/www/...')
#2 /home/serv/www/functions.php(827): templater->load_template()
#3 /home/serv/www/functions.php(804): error_wrong_csrf()
#4 /home/serv/www/index.php(16): csrf_check_post('1b46edd81f1563a...')
#5 {main}
thrown in /home/serv/www/templates/page_parts/header_tpl.php on line 6
[27-Aug-2016 04:19:48 Europe/Moscow] PHP Warning: mail(): Could not execute mail delivery program '/usr/sbin/sendmail -t -i ' in /home/serv/www/php_classes/mail_class.php on line 84
[27-Aug-2016 04:27:42 Europe/Moscow] PHP Warning: shell_exec(): Unable to execute 'whoami' in /home/serv/www/test_mail.php on line 29
系统日志:
Aug 27 04:39:01 frankfurt CRON[30551]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean)
Aug 27 04:39:01 frankfurt CRON[30552]: (root) CMD ( test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond)
在 php7.0-fpm.log 中没有任何今天的记录