Почему браузер показывает серверный API для info.html как обработчик Apache 2.0, а info.php как FPM / FastCGI? - PullRequest
0 голосов
/ 30 октября 2018

Окружающая среда: centos7 + php7.2
. Я строю FPM / FastCGI, как говорится в руководстве.
сборка FPM / FastCGI

Показать мою важную конфигурацию в /etc/httpd/conf.d/php.conf.

<IfModule  mod_php7.c>
    <FilesMatch \.(php|phar)$>
         SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
<FilesMatch ".+\.html$">
    SetHandler application/x-httpd-php
</FilesMatch>
    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"
</IfModule>

Назначьте то же содержимое ниже с двумя именами info.php и info.html в моем каталоге vps /var/www/html.

    <?php
    phpinfo();
    ?>

Введите vps_ip/info.php в браузере, покажите следующий вывод:

Code:
    System  Linux localhost.localdomain 2.6.32-042stab132.1 #1 SMP Wed Jul 11 13:51:30 MSK 2018 x86_64
    Build Date  Oct 10 2018 10:01:57
    Server API  FPM/FastCGI
    Virtual Directory Support   disabled

Введите vps_ip/info.html в браузере, покажите следующий вывод:

    System  Linux localhost.localdomain 2.6.32-042stab132.1 #1 SMP Wed Jul 11 13:51:30 MSK 2018 x86_64
    Build Date  Oct 10 2018 10:01:57
    Server API  Apache 2.0 Handler
    Virtual Directory Support   disabled

Почему мой браузер показывает Server API для info.html как Apache 2.0 Handler, но покажите Server API для info.php как FPM/FastCGI?

Попробуйте установить FilesMatch для html, как показано ниже.

<FilesMatch ".+\.html$">
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

Тип vps_ip/info.html, я получил ошибку:

Access denied.

cat /etc/httpd/conf/httpd.conf

ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory />
    AllowOverride none
    Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
    AllowOverride None
    Require all granted
</Directory>
<VirtualHost *:80>
    DocumentRoot /var/www/html
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    <Directory "/var/www/html">
            Options +Indexes +FollowSymLinks +ExecCGI
            AddHandler php-fastcgi .php
            Action php-fastcgi /cgi-bin/php.fastcgi
            AllowOverride All
            Order allow,deny
            Allow from All
    </Directory>
</VirtualHost>
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
<Files ".ht*">
    Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>
<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-httpd-php .php .html
    AddType application/x-httpd-php-source .phps
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on

apachectl -S

VirtualHost configuration:
*:80                   localhost.localdomain (/etc/httpd/conf/httpd.conf:130)
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex default: dir="/run/httpd/" mechanism=default 
Mutex mpm-accept: using_defaults
Mutex fcgid-pipe: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex authdigest-client: using_defaults
Mutex fcgid-proctbl: using_defaults
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: _RH_HAS_HTTPPROTOCOLOPTIONS
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="apache" id=48
Group: name="apache" id=48

Я хочу открыть vps_ip/info.html способом Apache FPM/FastCGI вместо Apache 2.0 Handler.

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

Это в вашей конфигурации:

<FilesMatch \.(php|phar)$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
<FilesMatch ".+\.html$">
    SetHandler application/x-httpd-php
</FilesMatch>

Измените это на:

<FilesMatch \.(php|phar|html)$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
0 голосов
/ 08 ноября 2018

Настройте свой php.conf, как показано ниже, или в зависимости от типа вашей ОС

<IfModule  mod_php7.c>
        <FilesMatch \.(php|phar)$>
             SetHandler "proxy:fcgi://127.0.0.1:9000"
        </FilesMatch>
    <FilesMatch ".+\.html$">
        SetHandler application/x-httpd-php
    </FilesMatch>
        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"
    </IfModule>

Конфигурация может варьироваться в зависимости от MAC, Windows и Linux.

0 голосов
/ 06 ноября 2018

1.Настройка конфигурации в php.ini

cgi.fix_pathinfo=0

2.Настройка конфигурации в www.conf
Изменить

security.limit_extensions = .php .php3 .php4 .php5

в

security.limit_extensions =

Теперь разрешите все расширения.

sudo setenforce Permissive
sudo systemctl restart httpd
sudo systemctl restart php72-php-fpm

Проверьте, что происходит, когда набирать your_vps_ip/info.html в браузере.

...