【问题标题】:PHP not running in VirtualHost on ApachePHP 未在 Apache 上的 VirtualHost 中运行
【发布时间】:2017-04-22 00:57:03
【问题描述】:

我不得不从旧服务器 (Plesk 14; CentOS 5; Apache 2.2; PHP 5.3.5) 迁移到新服务器 (Plesk Onyx 17; CentOS 7.3; Apache 2.4; PHP 7)

除自定义虚拟主机外,一切正常。

在旧服务器上,在我的 etc/httpd/conf/httpd.conf 中,我有以下内容并且它正在工作:

<VirtualHost XX.XX.XX.XX:80>
 DocumentRoot /var/www/vhosts/mycompany.com/httpdocs/myproject
 ServerName  myproject.com
 ServerAlias www.myproject.com

   <Directory /var/www/vhosts/mycompany.com/httpdocs/myproject>
        <IfModule sapi_apache2.c>
          php_admin_flag engine on
          php_admin_flag safe_mode on
        </IfModule>

       <IfModule mod_php5.c>
          php_admin_flag safe_mode off
          php_admin_value upload_tmp_dir "/tmp"
          php_admin_value session.save_path "/tmp"
       </IfModule>

       php_admin_flag engine on
       AddHandler php5-script .php

    </Directory>

</VirtualHost>

如果我没有php_admin_flag engine onAddHandler,它只会将 php 文件下载为文本。

在新服务器上,我尝试了完全相同的方法,它只是下载了 php 文件。

我还尝试在&lt;Directory&gt; 中添加以下内容,但没有成功:

LoadModule php5_module  /usr/lib64/httpd/modules/libphp5.so
#Error:  Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.

php_admin_flag engine on
# Invalid command 'php_admin_flag', perhaps misspelled or defined by a module not included in the server configuration

AddType text/html .php 
#I used this to make sure AddType works. It does - PHP displayed as HTML

AddType application/x-httpd-php .php
#Downloads the file as text

AddHandler application/x-httpd-php .php
#Downloads the file as text

AddType php5-script  .php
#Shows php as plain text

值得一提的是,在这个 Plesk 上有多个 PHP 版本。当我执行php -v 时,我得到PHP 5.3.5 (cli),但是当我在页面中使用phpinfo() 时,我得到“PHP 版本7.0.18”。

我的猜测是与此有关。

在 Plesk 的管理面板上显示 run PHP 7 as FPS Application

这是phpinfo()https://pste.eu/p/BGpI.html的快照

知道会是什么吗?

【问题讨论】:

    标签: php linux apache centos plesk


    【解决方案1】:

    嗨,米罗,

    您是否考虑过从 MPM-EVENT 切换到 MPM-PREFORK,以便能够使用 libapache2 - PHP - 模块?

    LoadModule php5_module  /usr/lib64/httpd/modules/libphp5.so
    #Error:  Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
    

    => HOME > 工具和设置 > Apache Web 服务器 >(选项)MPM 模式

    【讨论】:

    • 将 MPM 更改为 Prefork 现在可以很好地使用:LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so | AddHandler application/x-httpd-php .php谢谢!
    • 这样做的缺点是它现在正在运行 php5。知道如何为 php7 加载模块吗?
    • "任何想法如何为 php7 加载模块" - 当然...只需将您的供应商 PHP - 版本升级到 7.0 甚至 7.1。 CentOS 7.3 示例: => yum --enablerepo=remi,remi-php71 install php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-memcache php- pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    • 嗯。我的意思是如何使用 plesk 附带的现有 php 7?例如thisthis 在服务器上打开同一个文件,但其中一个是通过带有 libphp5.so 的 VirtualHost 路由的。知道如何加载现有的 php 7 吗?
    • Miro...您可能在这里误解了一些东西:附加的 Plesk PHP 版本没有 libapache2 - PHP - 用于您的 apache - 网络服务器的模块,您只能使用这些模块之一来安装apache - 您服务器上的网络服务器。 ;-)
    猜你喜欢
    • 1970-01-01
    • 2014-10-25
    • 2015-06-02
    • 2011-09-05
    • 2010-11-08
    • 2018-11-19
    • 2015-05-28
    • 2020-08-12
    • 1970-01-01
    相关资源
    最近更新 更多