PHP 无法在 Apache 虚拟主机上运行

PHP 无法在 Apache 虚拟主机上运行

我在 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。

相关内容