我遇到了一个相当奇怪的行为。我已将一个简单的 phpinfo 测试脚本(见下文)作为 index.php 放在我的域的根目录中。当我在浏览器中将其作为 www.example.com 打开时,它会正确加载。但是,当我将其作为 www.example.com/index.php 打开时,浏览器会提示我下载文件(即脚本本身),所有其他 .php 文件也会发生同样的情况。只有当隐式打开 index.php 作为域的登录页面时,它才会起作用。
索引.php:
<?php
phpinfo();
配置:
Ubuntu 18.04
Apache 2.4
PHP 7.2
此外,服务器(和 Apache 的配置)通过 Plesk 维护并运行多个域,我拥有 root 访问权限。所有其他域都运行良好,只有这个域运行正常,我无法找出问题所在,因为它的配置方式相同。切换到 nginx 可以正常工作,但是,出于其他原因,我希望这个域由 Apache 提供服务。没有 .htaccess 文件,文件在隐式打开时被执行这一事实表明 PHP 通常可以正常工作。
该域的 httpd.conf 的相关部分:
<IfModule mod_fcgid.c>
FcgidInitialEnv PP_CUSTOM_PHP_INI /var/www/vhosts/system/example.com/etc/php.ini
FcgidInitialEnv PP_CUSTOM_PHP_CGI_INDEX fastcgi
FcgidMaxRequestLen 134217728
FcgidIOTimeout 300
</IfModule>
TimeOut 300
<Directory /var/www/vhosts/example.com>
<IfModule mod_fcgid.c>
<Files ~ (\.fcgi$)>
SetHandler fcgid-script
Options +ExecCGI
</Files>
</IfModule>
<IfModule mod_fcgid.c>
<Files ~ (\.php$)>
SetHandler fcgid-script
FCGIWrapper /var/www/cgi-bin/cgi_wrapper/cgi_wrapper .php
Options +ExecCGI
</Files>
</IfModule>
SSLRequireSSL
Options -Includes +ExecCGI
</Directory>