Apache 找不到 PHP

Apache 找不到 PHP

我有一条捷径:

c:/路径/到/app1/current_php-cgi.exe.lnk

我正在尝试这样做:

FcgidWrapper“c:/path/to/app1/current_php-cgi.exe.lnk” .php

Apache 的语法没有问题,但重启后,任何对 PHP 文件的请求都会导致此错误:

[Mon Jun 12 12:57:50.962946 2023] [fcgid:error] [pid 25564:tid 680]
(OS 193)%1 is not a valid Win32 application.:
mod_fcgid: can't run c:/path/to/app1/current_php-cgi.exe.lnk

^ 分隔为多行以便于阅读

我的愿望难道根本就得不到支持吗?


如果您想知道原因,那是因为我希望在需要进行 PHP 升级时停机/重新配置的时间绝对最少。我希望“app1”拥有自己的 PHP 安装,并让 app1 愉快地运行,即使“app2”可能已准备好进行 PHP 升级,或者“app3”可能需要旧版本的 PHP。

答案1

链接不是可以按原样运行的可执行文件,所以这并不奇怪。错误消息是在点上

is not a valid Win32 application.

因此

我的愿望难道根本就得不到支持吗?

是的,但这也是毫无意义的。与其在那里指定链接,不如指定实际可执行文件的路径。这就是为什么该路径是可配置的。

我希望“app1”拥有自己的 PHP 安装,并让 app1 顺利运行,即使“app2”可能准备好进行 PHP 升级,或者“app3”需要旧版本的 PHP。

您可以为不同的位置使用不同的 FCGI 包装器。这比尝试弯曲某些链接更明智。

答案2

我发现实现我的目标的最具跨兼容性的方法是使用指向 PHP 父文件夹的符号链接:

cd C:\path\to\app1\php
mklink /d current_php_dir C:\path\to\app1\php\8.2.1_x64

然后在 Apache 配置中使用它:

FcgidWrapper "c:/path/to/app1/php/current_php_dir/php-cgi.exe" .php

现在,这允许 Apache app1 vhost、计划的 app1 任务和 app1 执行的 shell 执行始终无缝指向同一个 PHP 版本。

相关内容