【问题标题】:Apache on windows and php-fpmWindows 上的 Apache 和 php-fpm
【发布时间】:2024-10-24 11:40:02
【问题描述】:


php 7.1
Apache 2.4 + mod_proxy_fcgi
Windows 10

我正在尝试在 Windows 上设置 php-fpm + apache,使用 mod_proxy_fcgi 但不断出错。谁能帮我配置apache。

我得到了 php-fpm runnig,并验证它确实可以使用 nginx,所以 php 应该不是问题。


PHP-fpm 正在端口 9123 上运行。

这是我的虚拟主机配置:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "${SRVROOT}/htdocs"
    <Directory "${SRVROOT}/htdocs">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        <FilesMatch "\.php$">
            SetHandler proxy:fcgi://127.0.0.1:9123
        </FilesMatch>
    </Directory>    
</VirtualHost>

这是错误:

代理错误

您的浏览器发送了一个此服务器无法理解的请求。这 代理服务器无法处理请求 GET /index.php/。

原因:无法解析 URI: fcgi://127.0.0.1:9123C:/Apache24/htdocs/index.php*

有人知道怎么解决吗?

【问题讨论】:

  • 我也有同样的问题。您能分享一下您的解决方案吗?
  • 我的解决方案是切换到 linux 或改用 nginx
  • 显然这是单一的“最佳”方法,但有时由于业务需求不可行。

标签: php windows apache


【解决方案1】:

你试过把:

<FilesMatch "\.php$">
    SetHandler proxy:fcgi://127.0.0.1:9123
</FilesMatch>

在目录之外? IE。如果你把那部分放在 docroot 指令和 directory 指令之间会发生什么?

问候, 埃里克

【讨论】:

    【解决方案2】:

    你好尝试类似:

    <FilesMatch "^/CHANGE_ME/.*\.php(/.*)?$">
        SetHandler proxy:fcgi://127.0.0.1:9123
    </FilesMatch>
    

    【讨论】:

    • 这个也不行。但根本没有显示错误。我只能在屏幕上看到我的 index.php 的内容。也许我做错了什么。究竟应该用什么来代替“CHANGE_ME”?
    • 嗨。它应该是您的项目文件夹
    【解决方案3】:

    我正在处理同样的问题,我找到了根本原因:很可能我们都在关注this wiki.apache.org guide。上述指南中有几个错别字。导致我们出现问题的原因是SetHandler 后面缺少一个斜杠。这是对我有用的配置:

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
    
    <FilesMatch "\.php$">
        <If "-f %{REQUEST_FILENAME}">
            SetHandler "proxy:fcgi://localhost:9123/"
        </If>
    </FilesMatch>
    

    【讨论】:

      最近更新 更多