在 /etc/httpd/conf.modules.d/ 中,我有一个名为 10-php54-php.conf 的配置文件,我用它来指定我想要使用的 PHP 版本。我可以通过注释第 2 行并取消注释第 3 行在 PHP 7.2 和 PHP 5.4 之间自由切换。
有没有办法指定我想在特定目录中使用 PHP 5.4,而让 Apache 的其余部分使用 7.2?我在我们心爱的 Google 上看到了一些指南,告诉我使用 php-fpm,但如果可能的话,我想使用这些 .so 文件。
/etc/httpd/conf.modules.d/10-php54-php.conf:
<IfModule prefork.c>
LoadModule php7_module modules/libphp7.so
#LoadModule php5_module modules/libphp54-php5.so
</IfModule>
我已经尝试了 httpd.conf 中的一些变化,但 apache 无法启动:
<Directory "var/www/html/directory">
LoadModule php5_module modules/libphp54-php5.so # tried with LoadModule and Include
</Directory>
Apache 2.4.6,CentOS 7.4。
编辑:当将 LoadModule 放入我的虚拟主机时,运行时无法重新启动apachectl 优雅。
/etc/httpd/sites-enabled/domain.conf:
<VirtualHost *:80>
DocumentRoot /var/www/html/
ServerName www.domain1.com
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.com
ServerAlias *.domain2.com
ServerAdmin [email protected]
DocumentRoot /var/www/html/domain2
ErrorLog /var/log/httpd/domain2.com-error.log
CustomLog /var/log/httpd/domain2.com-access.log combined
php_admin_value default_charset UTF-8
</VirtualHost>
<VirtualHost *:80>
ServerName service.domain1.com
ServerAdmin [email protected]
DocumentRoot /var/www/html/service
ErrorLog /var/log/httpd/service.domain1.com-error.log
CustomLog /var/log/httpd/service.domain1.com-access.log combined
#LoadModule php5_module modules/libphp54-php5.so
</VirtualHost>
journalctl-xe:
Mai 22 11:33:08 host.host polkitd[700]: Registered Authentication Agent for unix-process:14527:379023715 (system bus name :1.15226 [/usr/bin/pkttyagent --notif
Mai 22 11:33:09 host.host httpd[14533]: [Wed May 22 11:33:09.001953 2019] [so:warn] [pid 14533] AH01574: module php5_module is already loaded, skipping
Mai 22 11:33:09 host.host kernel: httpd[14533]: segfault at 0 ip 00007f46635326b7 sp 00007fff2214f1d8 error 4 in libphp7.so[7f4663284000+45a000]
Mai 22 11:33:09 host.host systemd[1]: httpd.service: control process exited, code=killed status=11
Mai 22 11:33:09 host.host systemd[1]: Reload failed for The Apache HTTP Server.
答案1
您不能同时加载两个不同的 PHP 模块。就是这样。这就是为什么您必须使用 php-fpm 来运行不同的 PHP 版本。
答案2
您只能使用LoadModule
在服务器配置 ( ) 或虚拟主机的上下文中httpd.conf
。它在目录上下文中不起作用。