我正在尝试将 php5.6.23 设置为我的服务器上的快速 CGI,以便使用 php7 作为主版本
但在我的一个域中,我收到此错误:
The requested URL / was not found on this server.
这是我的虚拟主机配置:
ScriptAlias / /usr/lib/cgi-bin
DocumentRoot "/home/ue4xxxx/www"
<Directory "/home/ue4xxxx/www">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php-cgi-5.6.23
<FilesMatch "\.php*">
SetHandler php-cgi
</FilesMatch>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/ue4/error.log
CustomLog ${APACHE_LOG_DIR}/ue4/access.log combined
我有 php cgi bin 位于/usr/lib/cgi-bin
,我想使用 vhost 根目录中的文件/home/ue4xxxx/www
更新:遵循一些建议后,vhost 配置现在是:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName ue4-xxxx.tld
ServerAlias ue4-xxxx.tld
ScriptAlias /cgi-bin /usr/lib/cgi-bin
DocumentRoot "/home/ue4xxxx/www"
<Directory "/home/ue4xxxx/www">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php-cgi-5.6.23
<FilesMatch "\.php">
SetHandler php-cgi
</FilesMatch>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/ue4/error.log
CustomLog ${APACHE_LOG_DIR}/ue4/access.log combined
</VirtualHost>
进行这些更改后,我收到 404 错误:
The requested URL /cgi-bin/php-cgi-5.6.23/index.php was not found on this server
答案1
这里有一个错误:
<FilesMatch "\.php*">
“*” 是不是通配符,就像您使用的那样,但其含义是“重复上一个匹配项零次或多次”。
您应该查看 Apache 文档常用表达,并将 更改FilesMatch
为:
<FilesMatch "\.php">
另外:它看起来像:
ScriptAlias / /usr/lib/cgi-bin
可能是:
ScriptAlias /cgi-bin /usr/lib/cgi-bin
您可以查看 Apache 文档ScriptAlias 指令了解更多使用细节。