CentOS 7 с php-fpm отображает необработанный PHP

Резюме: мой сервер CentOS 7 с PHP 7.4 fpm не выполняет файлы PHP, вместо этого они предоставляют клиенту необработанный файл PHP. В следующем разделе я объясню среду.


Я установил минимальный CentOS в виртуальном боксе.

На сервере нет aptбез графического интерфейса, без добавления гостевой виртуальной коробки (пожалуйста, не ожидайте, что я скопирую вставку текстов вместо скриншотов) и без каких-либо причудливых функций.

Я также очень строго отношусь к URL-адресу, с которого я получаю пакет. Вот почему я никогда не загружаю пакет

yum install <xxx>

вместо этого я использую этот способ для установки любого пакета

rpm -Uhv --reinstall <http://.... .rpm>

После установки минимальной CentOS 7,

Установленный Апач httpd24u-2.4.54 из репозитория IUS:

rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/a/apr15u-1.5.2-2.ius.el7.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/a/apr15u-util-1.5.4-3.ius.el7.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/h/httpd24u-filesystem-2.4.54-2.el7.ius.noarch.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/h/httpd24u-tools-2.4.54-2.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libnghttp2-1.33.0-1.1.el7.x86_64.rpm
rpm -Uvh --reinstall https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/b/brotli-1.0.7-5.el7.x86_64.rpm
rpm -Uvh --reinstall http://mirror.centos.org/centos/7/os/x86_64/Packages/mailcap-2.1.41-2.el7.noarch.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/h/httpd24u-2.4.54-2.el7.ius.x86_64.rpm

Затем установил модули Apache,

rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/a/apr15u-util-ldap-1.5.4-3.ius.el7.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/h/httpd24u-mod_ldap-2.4.54-2.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/h/httpd24u-mod_ssl-2.4.54-2.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/h/httpd24u-mod_session-2.4.54-2.el7.ius.x86_64.rpm

Затем установил PHP 7.4 fpm:

rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/p/php74-common-7.4.30-1.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/p/php74-fpm-7.4.30-1.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/p/php74-fpm-httpd-7.4.30-1.el7.ius.noarch.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/m/mod_php74-7.4.30-1.el7.ius.x86_64.rpm

Затем установил модули PHP:

rpm -Uvh --reinstall http://mirror.centos.org/centos/7/os/x86_64/Packages/libxslt-1.1.28-6.el7.x86_64.rpm
rpm -Uvh --reinstall http://mirror.centos.org/centos/7/updates/x86_64/Packages/libxml2-2.9.1-6.el7_9.6.x86_64.rpm
rpm -Uvh --reinstall http://mirror.centos.org/centos/7/updates/x86_64/Packages/net-snmp-5.7.2-49.el7_9.2.x86_64.rpm
rpm -Uvh --reinstall http://mirror.centos.org/centos/7/updates/x86_64/Packages/net-snmp-libs-5.7.2-49.el7_9.2.x86_64.rpm
rpm -Uvh --reinstall http://www6.atomicorp.com/channels/atomic/centos/7/x86_64/RPMS/oniguruma-6.8.2-1.el7.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/p/php74-ldap-7.4.30-1.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/p/php74-mbstring-7.4.30-1.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/p/php74-mysqlnd-7.4.30-1.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/p/php74-pdo-7.4.30-1.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/p/php74-snmp-7.4.30-1.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/p/php74-soap-7.4.30-1.el7.ius.x86_64.rpm
rpm -Uvh --reinstall https://repo.ius.io/7/x86_64/packages/p/php74-xml-7.4.30-1.el7.ius.x86_64.rpm
rpm -Uvh --reinstall http://mirror.centos.org/centos/7/os/x86_64/Packages/perl-Data-Dumper-2.145-3.el7.x86_64.rpm
rpm -Uvh --reinstall http://mirror.centos.org/centos/7/updates/x86_64/Packages/net-snmp-agent-libs-5.7.2-49.el7_9.2.x86_64.rpm
rpm -Uvh --reinstall http://mirror.centos.org/centos/7/os/x86_64/Packages/lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm # required by Net-snmp

Я установил Perl и Mysql8 и команду Unix lsof. Я также могу предоставить их детали, но они не имеют отношения к этому вопросу.


Разрешены http и https через брандмауэр:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

в /etc/httpd/conf/httpd.conf,

Модули

LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbd_module modules/mod_authn_dbd.so
LoadModule authn_socache_module modules/mod_authn_socache.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_dbd_module modules/mod_authz_dbd.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_form_module modules/mod_auth_form.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule allowmethods_module modules/mod_allowmethods.so
#LoadModule file_cache_module modules/mod_file_cache.so
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule socache_dbm_module modules/mod_socache_dbm.so
LoadModule socache_memcache_module modules/mod_socache_memcache.so
LoadModule dbd_module modules/mod_dbd.so
#LoadModule bucketeer_module modules/mod_bucketeer.so
LoadModule dumpio_module modules/mod_dumpio.so
LoadModule echo_module modules/mod_echo.so
#LoadModule case_filter_module modules/mod_case_filter.so
#LoadModule case_filter_in_module modules/mod_case_filter_in.so
LoadModule buffer_module modules/mod_buffer.so
LoadModule ratelimit_module modules/mod_ratelimit.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule request_module modules/mod_request.so
LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule sed_module modules/mod_sed.so
LoadModule charset_lite_module modules/mod_charset_lite.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule mime_module modules/mod_mime.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule log_debug_module modules/mod_log_debug.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule remoteip_module modules/mod_remoteip.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule session_module modules/mod_session.so
LoadModule session_cookie_module modules/mod_session_cookie.so
LoadModule session_dbd_module modules/mod_session_dbd.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule cgid_module modules/mod_cgid.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule systemd_module modules/mod_systemd.so
LoadModule php7_module modules/libphp7.so

дополнительные соответствующие части:

Listen 80

<IfModule php7_module>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
</IfModule>

<IfModule unixd_module>
User nobody
Group nobody
</IfModule>

<Directory />
    AllowOverride none
    Require all denied
</Directory>

DocumentRoot "/my/webpages"

<Directory "/my/webpages">
    Options Indexes FollowSymLinks ExecCGI Includes
    AllowOverride All
    Require all granted
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html index.html.var index.php index.php3 index.php4
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddHandler cgi-script .cgi .pl
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

Include /etc/httpd/extra/httpd-vhosts.conf

<IfModule ssl_module>
Listen 443
    <IfDefine SSL>
    Include /etc/httpd/extra/httpd-ssl.conf
    </IfDefine>
</IfModule>

<IfModule ssl_module>
    Include /etc/httpd/extra/httpd-ssl.conf
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
</IfModule>

TraceEnable Off

ServerTokens Prod
ServerSignature Off

<IfModule mod_headers.c>
    Header unset X-Powered-By
</IfModule>

И /etc/httpd/extra/httpd-ssl.conf:

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/sslcache(512000)"
SSLSessionCacheTimeout  300


<VirtualHost _default_:443>
    DocumentRot "/my/webpages"
    ServerName localhost:443
    ServerAdmin admin@usr.myserver.loc
    ErrorLog "logs/ssl_error_log"
    TransferLog "logs/access_log"
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile "/etc/httpd/conf/ssl/my.crt"
    SSLCertificateKeyFile "/etc/httpd/conf/ssl/my.key"

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>

    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>

    <Directory "/var/www/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-5]" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0

    CustomLog "logs/ssl_request_log" \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Перезапуск служб:

systemctl restart httpd
systemctl restart php-fpm

Обратная связь

systemctl status httpd
systemctl status php-fpm

оба показывают как active (running).


Я также решил запрещенную ошибку 404 при загрузке

https://192.168.1.133/install.php

этими командами:

chcon  --user system_u --type httpd_sys_content_t -Rv /my/webpages/

Примечания: я не уверен, какова связь между php а также php-cli а также php-fpm. Я нашел только пакеты, относящиеся к php-fpm от IUS и для PHP 7.4.


Теперь, загрузив

https://192.168.1.133/install.php

дает мне сырой PHP. Я не могу проверить это с помощью http. Пожалуйста, не спрашивайте.


Дополнительная информация:

php-fpm -v

PHP 7.4.30 ....

php-fpm -v

httpd -v

.... Apache/2.4.54 (IUS)
...

httpd -v

ls /etc/init.d
functions    jexec    lampp    netconsole    network   README
httpd -M | grep php
php7_module (shared)

Centos Centos7 PHP-FPM PHP7

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *