我将测试平台上的 php 从 php 7.4 更新到 php 8.0。Centos 8盒子上的更新工作正常。Centos 7 上的则没有。页面<?php phpinfo() ?>显示为空白,而我的测试页面仅将代码显示为文本。
命令行似乎可以工作:
[lhadmin@dho-dev01 ~]$ php --version
PHP 8.0.8 (cli) (built: Jun 29 2021 07:41:19) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.8, Copyright (c) Zend Technologies
[lhadmin@dho-dev01 ~]$ php -r 'echo "Hello World!\n";'
Hello World!
Run Code Online (Sandbox Code Playgroud)
我尝试卸载 php 并重新安装 httpd。然后我又安装了php。还是不行。我可以回到 php 7.4,一切正常。
我正在切换的存储库是 remi-php74 和 remi-php80。
cis-cat 建议的安全策略是否可能会干扰此操作?我尝试禁用 selinux 但没有任何作用。
谢谢您的意见。
首先,由于 RHEL 问题,我们不打算迁移到 Centos 8。我们正在寻找其他发行版。这种选择就是他们所说的“高于我的工资等级”。我也不认为 centos 7 上的 php80 是问题所在。我认为这个系统有一些问题,可能与我们一直在实施的安全设置有关。我们的邮件列表出现问题,因为 /var/log 的默认权限设置为 600。
正如 Remi Collet 提到的,它应该开箱即用。包列表有 923 行长。有什么包裹是我应该特别注意的吗?我知道 apache 以某种方式与 php 交互,因为信息页面在未安装 php 时显示文本。当它尝试访问该功能时,它会显示一个空白页。
我尝试过的:
在 php 7.4 上 - 一切正常。phpinfo() 显示 PHP 版本 7.4.21 等。
服务器版本:Apache/2.4.48 (codeit) 服务器构建时间:2021 年 5 月 26 日 11:40:06
7.4 配置文件:
/etc/httpd/php.conf
/etc/httpd/conf.module.d/15-php.conf
/etc/httpd/modules/libphp7.so
/etc/httpd/modules/libphp7-zts.so
Run Code Online (Sandbox Code Playgroud)
yum-config-manager --disable remi-php74
yum-config-manager --enable remi-php80
yum check-update # verify
yum -y update
Run Code Online (Sandbox Code Playgroud)
systemctl 用 php 8.0 重新启动 httpd
phpinfo() 是一个空白页。不过,命令行上的 PHP 可以工作。
8.0配置文件:
/etc/httpd/php.conf,
/etc/httpd/conf.module.d/20-php.conf
/etc/httpd/modules/libphp.so
Run Code Online (Sandbox Code Playgroud)
回去:
yum remove php*
yum-config-manager --disable remi-php80,
yum-config-manager --enable remi-php74,
systemctl restart httpd # with php 7.4
Run Code Online (Sandbox Code Playgroud)
使用不同的包设置重复此操作。
我的 httpd 配置文件:
autoindex.conf php.conf README shib.conf ssl.conf ssl.conf.rpmnew ssl.conf.rpmsave userdir.conf welcome.conf
Run Code Online (Sandbox Code Playgroud)
我什至尝试重新安装 httpd 并从那里开始构建。还是不行。
20-php.conf 的内容
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
# Cannot load both php5, php7 and php modules
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
<IfModule prefork.c>
LoadModule php_module modules/libphp.so
</IfModule>
</IfModule>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
php.conf 的内容:
#
# The following lines prevent .user.ini files from being viewed by Web clients.
#
<Files ".user.ini">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
</Files>
#
# Allow php to handle Multiviews
#
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
# mod_php options
<IfModule mod_php.c>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
<FilesMatch \.(php|phar)$>
SetHandler application/x-httpd-php
</FilesMatch>
#
# Uncomment the following lines to allow PHP to pretty-print .phps
# files as PHP source code:
#
#<FilesMatch \.phps$>
# SetHandler application/x-httpd-php-source
#</FilesMatch>
#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"
#php_value opcache.file_cache "/var/lib/php/opcache"
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我得到了这个工作,非常感谢。
我再次重新启动了 httpd,并注释掉了 IfModule 条件,并在 httpd 无法重新启动时更仔细地查看了“journalctl -xe”的输出。
相关错误:
Apache 正在运行线程 MPM,但您的 PHP 模块未编译为线程安全的。您需要重新编译 PHP。
快速搜索表明我需要将 00_mod_mpm.conf 中的 mod_mpm_event 替换为 mod_mpm_prefork
# LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Run Code Online (Sandbox Code Playgroud)
我很好奇,所以我将我的 httpd 配置与其他服务器上的其他 httpd 配置进行了比较。
Centos 8 和可用的 php80:
服务器版本:Apache/2.4.37(centos)
典型的 Centos 7:
服务器版本:Apache/2.4.6(CentOS)
我无法更新的 Centos 7:
服务器版本:Apache/2.4.48(codeit)
由于这是一个开发服务器,我尝试了非反向移植版本的 apache,以不再被安全审核标记为我的 httpd 已过时,尽管每个人都知道 RHEL 的反向移植。
| 归档时间: |
|
| 查看次数: |
2591 次 |
| 最近记录: |