为目录加载特定的 php 模块 - Apache 2.4 CentOS 7

为目录加载特定的 php 模块 - Apache 2.4 CentOS 7

在 /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。它在目录上下文中不起作用。

相关内容