我在设置新域名时遇到了一些奇怪的问题;Apache 目前没有按要求提供 PHP 文件,而是强制下载 .PHTML 文件。
我已经使用 Google 搜索过,但没有找到任何修复方法。
这个问题有点奇怪,因为我目前在同一台服务器上运行其他网站,并且已经使用相同的配置运行了两年多,但他们没有遇到这个问题。
VirtualHost 配置如下
<VirtualHost *:80>
DocumentRoot /var/www/vhosts/mydomain.com/httpdocs
ServerAlias *.mydomain.com
ServerName mydomain.com
#AddHandler application/x-httpd-php .php
#DirectoryIndex index.php
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
</Directory>
CustomLog "/var/www/vhosts/mydomain.com/logs/combined.log" combined
</VirtualHost>
正如您所见,它非常简单......
我尝试了以下方法,但无济于事
- 确保 PHP 模块已加载
- 确保 PHP 文件被 apache 视为 PHP 文件
- 测试具有相同配置的其他站点
现在我不确定,但我认为这可能与安装 Plesk 并用于管理通过 Media Temple 托管的此服务器上托管的大多数(并非全部)域名有关
这当然是无法通过 Plesk 配置的域名之一,因为需要自定义 VirtualHost 配置,而 Plesk 根本不允许这样做...好吧,这很容易。
在联系 Media Temple 之前我先在这里发帖,因为上次我遇到 Apache 配置问题时,Media Temple 对这个问题几乎没有帮助,因为这超出了他们的支持范围,而且我没有 30 分钟的时间等待……
答案1
您是否尝试过使用 php 取消注释这些行?
#AddHandler application/x-httpd-php .php
#DirectoryIndex index.php
不应该#
符号开始其行,将其注释掉。
另外,请确保您有php.conf
在你的 apache 中conf.d/
目录(或者您用于存放 conf 文件的任何目录)。
答案2
您可以尝试从控制台运行“php -v”命令,它会打印出您的 php 版本的通知,并附加来自您的 php.ini 配置文件的错误消息。
安装 PHP 5.2.6 后您是否重新启动了 Apache?
答案3
问题已解决...不确定如何或为什么,但显然复制same exact config which had already been attempted and failed
Plesk 创建的域的文件夹结构和配置似乎可以解决这个问题......
最终配置
<VirtualHost myip:80>
ServerAlias *.mydomain.com
ServerName mydomain.com
DocumentRoot /var/www/vhosts/mydomain.com/httpdocs
CustomLog /var/www/vhosts/mydomain.com/statistics/logs/access_log plesklog
ErrorLog /var/www/vhosts/mydomain.com/statistics/logs/error_log
<IfModule mod_userdir.c>
UserDir /var/www/vhosts/mydomain.com/web_users
</IfModule>
<IfModule mod_ssl.c>
SSLEngine off
</IfModule>
<Directory /var/www/vhosts/mydomain.com/httpdocs>
<IfModule sapi_apache2.c>
php_admin_flag engine on
php_admin_flag safe_mode off
php_admin_value open_basedir "/var/www/vhosts/mydomain.com/httpdocs:/tmp"
</IfModule>
<IfModule mod_php5.c>
php_admin_flag engine on
php_admin_flag safe_mode off
php_admin_value open_basedir "/var/www/vhosts/mydomain.com/httpdocs:/tmp"
</IfModule>
Options -Includes -ExecCGI
</Directory>
<Directory /var/www/vhosts/mydomain.com/web_users>
<IfModule sapi_apache2.c>
php_admin_flag engine off
</IfModule>
<IfModule mod_php5.c>
php_admin_flag engine off
</IfModule>
</Directory>
</VirtualHost>
请注意,这只是我不喜欢 Plesk 的另一个原因......
答案4
确保php_admin_flag engine
正确部分包含的行是On
。在某些 Linux 发行版中,此功能默认是禁用的。
如果您正在使用mod_userdir
Apache 扩展,请启用它(通过a2enmod userdir
),并且您还必须编辑/etc/apache2/mods-enabled/php*.conf
文件以启用上述标志。