更新我的 vps 后,出现以下错误:
无法启动 apache:正在启动 httpd:/etc/httpd/conf.d/php.conf 第 31 行语法错误:命令“php_value”无效,可能是拼写错误或由服务器配置中未包含的模块定义 [失败]
在 PHP 上启用模块:
[PHP 模块] bz2 日历核心 ctype curl 日期 dom ereg exif fileinfo 过滤器 ftp gd gettext gmp hash iconv imap intl ionCube 加载器 json libxml mbstring mcrypt mhash mysql mysqli openssl pcntl pcre PDO pdo_mysql pdo_sqlite Phar readline 反射会话 shmop SimpleXML 套接字 SPL sqlite3 标准 suhosin 标记器 wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib [Zend 模块] ionCube PHP 加载器
与错误相关的行:
php_value session.save_handler“文件”
这个错误是什么意思?我该如何修复它?
答案1
我最近在 CentOS 上使用 Plesk 9.5 时遇到了这个确切的问题。
我不能确定这是否是由 Plesk 更新引起的。客户认为最近没有进行任何更改,但出现此错误时 Apache 无法启动。
在对系统进行评估以确保不是由于违规而导致的之后,我进行了一些故障排除,并确定已从mod_php
Apache 配置中删除。检查 Plesk 设置后,发现盒子上的每个 vhost 都在使用 FastCGI 和 SuExec。
使用 FastCGI 和 SuExec 时,您无法更改 php.conf(FastCGI)和 .htaccess(SuExec)中的 PHP 指令。
客户最初注释掉了有问题的行,但这破坏了对所有内容的会话支持。我能够解决此问题的唯一方法是手动将 mod_php 重新添加回 httpd.conf。
将以下行添加到其他 LoadModule 的部分。确保路径 (../modules/) 与其中的其余模块匹配。它很可能已经存在于您的系统中,只是在更新期间从配置中删除了。
bash# vi /etc/httpd/conf/httpd.conf
LoadModule php5_module ../modules/libphp5.so
bash# apachectl restart
这让我措手不及,我不能肯定地说是升级导致了这个问题,或者这是否是最好的解决办法。我愿意接受评论,但强烈建议不要注释掉 php 指令,因为/etc/httpd/conf.d/php.conf
它会破坏一些东西。
答案2
无效命令‘php_value’,可能是拼写错误或由服务器配置中未包含的模块定义
如果您错误地将 Apache httpd-2.4 配置为使用 prefork 以外的其他 mpm 模块,则可能会出现上述错误(因为只有 prefork mpm 才能在 Linux(CentOs7/RHEL7)上与 php 配合良好)。更正 Apache httpd 配置以使用 prefork mpm 将解决该问题。
/etc/httpd/conf.modules.d/10-php.conf
加载模块 php5_module 模块/libphp5.so
/etc/httpd/conf.modules.d/00-mpm.conf
加载模块 mpm_prefork_module 模块/mod_mpm_prefork.so
答案3
正如 David 之前所评论的,这可能是因为 PHP mod 已从 Apache2 中禁用。
对我来说,当(重新)启动 Apache 时,它出现错误:
apache2.service 的作业失败,因为控制进程退出并显示错误代码。有关详细信息,请参阅“systemctl status apache2.service”和“journalctl -xe”。
然后,在 journalctl -xe 中:
AH00526:/etc/apache2/sites-enabled/host.conf 第 31 行语法错误,命令“php_value”无效,可能是拼写错误或由服务器配置中未包含的模块定义
从 Ubuntu 17.10 升级到 18.04(因此从 PHP7.1 升级到 7.2)时发生了这种情况,这显然完全禁用了 libapache2-mod-php*。
在 Ubuntu 上,执行以下操作可以修复此问题:
sudo a2enmod php7.2
sudo systemctl restart apache2
答案4
只需注释掉这些行即可。
我有
#php_value session.save_handler "files"
#php_value session.save_path "/var/lib/php/session"
然后运行“如果您在 Plesk 中,请重新配置,然后重新启动 apache”,似乎工作正常。10 分钟前,在 plesk 更新 #53 后发生了这种情况。