【问题标题】:How to use PHP-FPM with aliased directories如何将 PHP-FPM 与别名目录一起使用
【发布时间】:2020-06-09 06:18:54
【问题描述】:

我正在尝试将我的 Centos 7 服务器从 PHP5 升级到 PHP7,而且似乎也建议使用 fpm 方法(我是新手)。

在我的测试服务器上,我已经安装了 PHP7.3 没问题,还有 PHP-FPM。并添加行

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/my_doc_root/$1

工作....有点。

问题是,由于历史原因和我无法控制的原因,我有各种路径别名为 /,但它们不在文档根目录中。即

Alias /myURL /some/different/path

很明显,问题在于上面的ProxyPassMatch 命令会将“myURL/fish.php”重定向到一个不存在的文件(“my_doc_root/fish.php”),这会导致错误。

这个问题有简单的解决方案吗?例如我可以在文档根目录和some/different/path<Directory> 条目中添加一些内容。或者,有没有办法可以更新 /etc/https/conf.d/php.conf (来自 PHP5)以旧式方式运行 PHP7?我不认为我可以,因为 php73 包中没有 libphp 文件。

显然有解决方案(为不在文档根目录中的每个 URL 编写单独的 ProxyPassMatch 指令,或者以更智能的方式重组整个文件系统),但如果可以的话,我宁愿避免这些;确实,后者我根本做不到。

【问题讨论】:

    标签: php apache fastcgi fpm


    【解决方案1】:

    尝试将您的别名放在ProxyPassMatch 指令之前,因为如果它首先找到该别名,那么别名将被忽略。

    Alias /myURL /some/different/path
    <Directory "/some/different/path/">
        AllowOverride All
        require ip 127.0.0.1
    </Directory>
    

    更新这可能会帮助你https://serverfault.com/questions/629099/apache-2-4-php-fpm-mod-proxy-fcgi-alias

    【讨论】:

    • 嗯,没有效果。尝试将我的 ProxyPassMatch 移动到最后,(并添加目前不在我的 中的 require ip)但我仍然收到文件未找到错误。我猜ProxyPassMatch 仍在尝试重写到文档根目录,而不是它所在的实际目录。
    • 完美 - 谢谢。对于后代,它实际上是在 VirtualHost 标记的开头添加:&lt;FilesMatch \.php$&gt; SetHandler "proxy:fcgi://127.0.0.1:9000" &lt;/FilesMatch&gt;
    • 很高兴你已经开始运行了!
    猜你喜欢
    • 2020-02-08
    • 2018-05-03
    • 1970-01-01
    • 2011-05-15
    • 2015-10-15
    • 1970-01-01
    • 2020-03-10
    • 2016-09-29
    • 2016-02-23
    相关资源
    最近更新 更多