我在 CentOS 6 上有一个带有 Parallels Power Panel 的虚拟专用服务器。默认的 Apache 虚拟主机(使用 IP 访问)运行正常。
现在我使用 Plesk 创建了一个新域,并复制了虚拟主机目录中的文件。不幸的是,PHP 脚本不起作用 - 您可以访问它们,但它们没有经过预处理。由于默认虚拟主机仍在运行,因此 PHP 模块正在运行。
我尝试修改 httpd.conf(这里是完整文件) 添加 NameVirtualHost 指令和 VirtualHost 部分,但没有成功。这是我添加的部分:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin admin@###.com
DocumentRoot /var/www/vhosts/###.com/httpdocs/
ServerName www.###.com
ServerAlias ###.com
ErrorLog /var/log/httpd/###.com/error.log
CustomLog /var/log/httpd/###.com/access.log common
<Directory "/var/www/vhosts/###.com/httpdocs/">
Options Indexes FollowSymLinks Includes MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
这是我的 php.conf (在 conf.d 中):
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
AddHandler php5-script .php
DirectoryIndex index.php
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php
答案1
据记录显示,问题出在 Plesk。
可能是手动安装 PHP 5 时出现了问题Webtatic. 此后,使用 Plesk 创建的任何新子域都会在其 Apache 配置中php_admin_flag engine off
。
很难找到它们的位置,因为 Plesk 为conf
域目录子目录中的每个 [子] 域创建一个配置文件并将它们包含在内httpd.conf
。这是一个很好的做法,但很难找到,如果您想执行与 GUI 选项不同的操作,则无法轻松地对其进行个性化设置(如果您通过 GUI 更改某些内容,则不会修改旧的配置文件,但会创建一个新的配置文件,您必须重新应用所有修改)。
答案2
如果是默认安装(httpd、php 包),没有任何变化,那么应该是 php.ini 中的 short_open_tag 问题 - php 将解析带有 .php 扩展名的文件,但如果内容不是以 .php 开头,则会忽略它<?php
。
答案3
听起来你没有正确配置 Apache 来解析 .php 文件。它不知道如何处理它们,所以将它们作为下载文件吐出。
http://dan.drydog.com/apache2php.html
尝试步骤11。