代码之家  ›  专栏  ›  技术社区  ›  showkey

为什么浏览器将info.html的服务器API显示为apache2.0处理程序,而将info.php显示为FPM/FastCGI?

  •  3
  • showkey  · 技术社区  · 6 年前

    环境:centos7+php7.2。

    build 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 对于 信息.html 作为 Apache 2.0 Handler , 但是表演 信息.php 作为 FPM/FastCGI ?

    尝试设置 FilesMatch 如下图所示。

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

    类型 vps\u 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\u ip/info.html 用阿帕奇的 FPM/快速CGI 方式,而不是 Apache 2.0处理程序

    3 回复  |  直到 6 年前
        1
  •  3
  •   user7988893 user7988893    6 年前

    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 在浏览器中。

        2
  •  2
  •   delboy1978uk    6 年前

    <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>
    
        3
  •  -1
  •   Ishtiyak R Shishir    6 年前

    像下面的代码一样配置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>