使用 apache 2.4 和 php5-fpm 提供 DocumentRoot 之外的文件服务

使用 apache 2.4 和 php5-fpm 提供 DocumentRoot 之外的文件服务

我正在尝试使用 apache 2.4 和 php5-fpm 在我的文档根目录之外提供 php 文件。我的虚拟主机如下所示:

<VirtualHost *:8080>
    ServerName www.domain.tld
    DocumentRoot /data/projects/domain/www

    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/data/projects/domain/www/$1
    DirectoryIndex _start.php
</VirtualHost>

该网站使用安装在 /opt/vendor/webapp/ 中的 Web 应用程序。我已经有一个别名来提供 Web 应用程序的静态文件,这非常完美。

但是 css less 和精简的 javascript 文件是由 php 文件动态生成的。这似乎不起作用,因为 php 文件在我的 DocumentRoot 之外。

有没有办法使用 php-fpm 在 DocumentRoot 之外提供 php 文件?

编辑:对动态生成的 css 和 javascript 文件的请求被重写到名为 _generator.php 的 php 文件中。apache 错误日志中的错误是:

[proxy_fcgi:error] [pid 22105:tid 140602507183872] [client xxx.xxx.xxx.xxx:47544] AH01071: Got error 'Primary script unknown\n'

答案1

通常,当 PHP 应用程序的代码移出 DocumentRoot 时,会有一个前端控制器脚本充当引导程序来加载其他 PHP 代码。它可能会设置包含路径、在另一个位置(例如您的...vendor/webapp目录)加载配置 PHP 文件,并执行一些逻辑以根据 Web 请求 URI 确定要运行哪些代码。

我看到您有一个名为_start.php目录索引的文件。这看起来像是一个前端控制器脚本;可以从网络访问。没有关于代码的更多信息,_start.php或者...vendor/webapp真的没有足够的信息来回答您的动态 CSS 问题。

尝试阅读代码...vendor/webapp以获得帮助(README?)配置它以提供服务。我猜你的前端控制器需要被告知在哪里可以找到站点代码(...vendor/webapp)。

相关内容