簡體   English   中英

為什么我的腳本使用PHP5而不是PHP7

[英]Why does it use PHP5 instead of PHP7 for my script

我已經閱讀了十幾個線程,但無法找出問題所在。 我需要一台機器上的php5和php7,並希望php7解釋一個文件夾中的腳本。 我在配置中找不到錯誤,所以請看一下

Apache:Apache / 2.4.23(Debian)

操作系統:Debian測試

兩個PHP版本都安裝:

/var/www/test# ls -l /usr/bin/php*

lrwxrwxrwx 1 root root      21 Okt  6  2015 /usr/bin/php -> /etc/alternatives/php
-rwxr-xr-x 1 root root 9065192 Jul 26 10:33 /usr/bin/php5
-rwxr-xr-x 1 root root 4422704 Sep 18 10:38 /usr/bin/php7.0
lrwxrwxrwx 1 root root      28 Okt  6  2015 /usr/bin/php-config -> /etc/alternatives/php-config
-rwxr-xr-x 1 root root    5237 Jul 26 10:33 /usr/bin/php-config5
lrwxrwxrwx 1 root root      24 Okt  6  2015 /usr/bin/phpize -> /etc/alternatives/phpize
-rwxr-xr-x 1 root root    4730 Jul 26 10:33 /usr/bin/phpize5

為此文件夾設置了右AddHandler

nano /var/www/test/.htaccess

AddHandler application/x-httpd-php7 .php

並設置AllowOverwrite

nano /etc/apache2/apache2.conf

...
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow 
# access here, or in any related virtual host.
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
...

和php7應該是默認的anway

update-alternatives php

  Auswahl      Pfad             Priorität Status
------------------------------------------------------------
* 0            /usr/bin/php7.0   70        automatischer Modus
  1            /usr/bin/php5     50        manueller Modus
  2            /usr/bin/php7.0   70        manueller Modus

這適用於命令行

php -v

PHP 7.0.11-1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.11-1, Copyright (c) 1999-2016, by Zend Technologies

但不是在服務器上下文中!

w3m http://localhost/test/info.php

PHP Version 5.6.24-0+deb8u1

System           Linux ber-eagle02vm 3.2.0-4-amd64 #1 SMP Debian 3.2.68-1+deb7u1 x86_64
Build Date       Jul 26 2016 08:17:13
Server API       Apache 2.0 Handler
Virtual
Directory        disabled
Support
Configuration
File (php.ini)   /etc/php5/apache2
Path
Loaded
Configuration    /etc/php5/apache2/php.ini
File
Scan this dir
for additional   /etc/php5/apache2/conf.d
...

有任何想法嗎?

看起來你正在使用mod_phpServer API => Apache 2.0 Handler ),這意味着php作為模塊嵌入在apache中。 要回答這個問題,據我所知,你不能同時加載多個mod_php,這就是你通過網絡服務器提供的php始終是版本5的原因。

當你在命令行上使用php時,它與web服務器無關,它根據你的更新替代品使用php7。 php命令轉到/usr/bin/php7

一種方法是使用cgi(fastcgi,php-fpm)用於不同的php版本。 我還讀到了通過使用不同的虛擬主機來設置它,但從未嘗試過,我想這也是另一個問題。 希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM