AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 908436
Accepted
Shadur
Shadur
Asked: 2018-04-20 00:07:59 +0800 CST2018-04-20 00:07:59 +0800 CST 2018-04-20 00:07:59 +0800 CST

使用 php-fpm/apache 无法正确解析斜线参数

  • 772

我最近在使用 Apache 2.4 和 PHP7 的 Debian Stretch 系统上通过proxy_fcgi和php-fpm.

它在测试阶段运行良好,但第一个客户正在使用一个 Moodle 网站,该网站大量使用了所谓的“斜线参数”(IE,请求,比如说,index.php/these/are/parameters/)。

按照moodle网站上的说明,我尝试设置AcceptPathInfo为On,甚至尝试security_limit_extensions在PHP中禁用,但到目前为止似乎没有任何效果。

相关配置粘贴在下面。我很肯定我在某个地方错过了一些简单的东西,但是我已经没有想法去哪里看。

(注意:常规 php 工作正常;斜杠参数不能。当设置cgi.fix_pathinfo为 0 时要求https://www.domain.nl/lib/javascript.php/foo/bar“未指定输入文件”;将其设置为 1 会导致“未找到有效的 Javascript 文件”,这至少表明该脚本被调用但参数没有正确传递给代理......)

阿帕奇:

<VirtualHost *:443>
    ServerName www.domain.nl
    ServerAlias domain.nl new.domain.nl

    DocumentRoot /home/webclients/www.domain.nl/public_html/
    Alias /cgi-bin/ /home/webclients/www.domain.nl/cgi-bin/
    CustomLog /var/log/apache2/www.domain.nl/access.log combined
    ErrorLog /home/webclients/www.domain.nl/logs/error.log
    TransferLog /home/webclients/www.domain.nl/logs/access.log

    ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php-fpm/domain.sock|fcgi://localhost/home/webclients/www.domain.nl/public_html
    SSLOptions +StdEnvVars

    <IfModule mod_suexec.c>
        SuExecUserGroup domain webclients
    </IfModule>

    <Directory /home/webclients/www.domain.nl/public_html/>
        AllowOverride All
        AcceptPathInfo On
        Require all granted
    </Directory>

    SSLEngine on
    #       LogLevel info
    SSLCertificateFile /etc/ssl/certs/www.domain.nl.pem
    SSLCertificateKeyFile /etc/ssl/private/www.domain.nl.key
    SSLCACertificateFile /etc/ssl/intermediate/intermediate-rapidssl-rsacag1.pem
    # Enable HSTS
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"



</VirtualHost>
# vim:syntax=apache

php-fpm 池文件:

[domain]

prefix=/

include=/etc/php/7.0/fpm/pool.d/defaults

php_admin_value[error_log] = /home/webclients/www.domain.nl/logs/php-error.log
php_admin_value[cgi.fix_pathinfo] = 0
security.limit_extensions = 
apache-2.4
  • 1 1 个回答
  • 1108 Views

1 个回答

  • Voted
  1. Best Answer
    Shadur
    2018-04-20T00:25:24+08:002018-04-20T00:25:24+08:00

    找到了。

    在深入研究代码本身以生成更好的调试信息之后,问题原来是mod_proxy_fcgi默认情况下不会将 PATH_INFO 服务器变量传递给客户端。

    解决此问题的一种方法是使用SetEnvIf:

    SetEnvIf REQUEST_URI "^/(.*\.php(/.*)?)$" proxy-fcgi-pathinfo
    ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php-fpm/domain.sock|fcgi://localhost/home/webclients/www.domain.nl/public_html
    

    东西现在可以正确通过,并且该站点似乎可以正常工作。

    • 0

相关问题

  • Apache2 - SSL 不工作

  • Apache <VirtualHost> 标签,如果客户端的 IP = x 则不重定向... 怎么做?

  • 我无法启用我的网站?[关闭]

  • SELinux 阻止 Apache 写入文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve