
私は、プライベート クラウド / ホスティング プラットフォームとして機能する、小規模なプライベート Debian Jessie サーバーを実行しています。
最近の PHP 要件でサービスをインストールするときに、しばしば「困難」に直面します。ほとんどのドキュメントでは、php
特定の方法で を呼び出すように指示されていますが (たとえば、composer をインストールする場合)、実際には を呼び出す必要があるためですphp5
。それだけであれば、簡単に対処できますが、多くのスクリプトなどを作り直さずに使用されるバイナリを完全に制御できるとは限りません。
$ php5 -v
PHP 5.6.20-0+deb8u1 (cli) (built: Apr 27 2016 11:26:05)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
$ php -v
PHP 5.5.15 (cli) (built: Oct 4 2014 14:03:37)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
両方のバイナリは異なるバージョンの PHP を指していますが、その理由がわかりません。インストールしたパッケージを一覧表示すると、php は 1 つしかありません。
php-auth/stable,now 1.6.4-1 all [installed]
php-auth-sasl/stable,now 1.0.6-1+deb8u1 all [installed,automatic]
php-db/stable,now 1.7.14-3 all [installed,automatic]
php-gettext/stable,now 1.0.11-1 all [installed,automatic]
php-http-request/stable,now 1.4.4-4 all [installed,automatic]
php-log/stable,now 1.12.8-2 all [installed,automatic]
php-mail/stable,now 1.2.0-7 all [installed,automatic]
php-mail-mime/stable,now 1.8.9-1+deb8u1 all [installed,automatic]
php-mdb2/stable,now 2.5.0b5-1 all [installed,automatic]
php-net-dime/stable,now 1.0.2-2 all [installed,automatic]
php-net-smtp/stable,now 1.6.2-2 all [installed,automatic]
php-net-socket/stable,now 1.0.14-1 all [installed,automatic]
php-net-url/stable,now 1.0.15-3 all [installed,automatic]
php-pear/stable,now 5.6.20+dfsg-0+deb8u1 all [installed]
php-soap/stable,now 0.13.0-1 all [installed,automatic]
php-tcpdf/stable,now 6.0.093+dfsg-1 all [installed,automatic]
php-xml-parser/stable,now 1.3.4-7 all [installed,automatic]
php5/stable,now 5.6.20+dfsg-0+deb8u1 all [installed] <--- HERE
php5-apcu/stable,now 4.0.7-1 amd64 [installed]
php5-cgi/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-cli/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-common/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-curl/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-gd/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-imagick/stable,now 3.2.0~rc1-1 amd64 [installed]
php5-imap/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-intl/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-json/stable,now 1.3.6-1 amd64 [installed,automatic]
php5-ldap/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed,automatic]
php5-mcrypt/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-memcache/stable,now 3.0.8-5 amd64 [installed]
php5-memcached/stable,now 2.2.0-2 amd64 [installed]
php5-mysql/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-pgsql/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed,automatic]
php5-pspell/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-readline/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed,automatic]
php5-recode/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-sqlite/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-tidy/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-xmlrpc/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
php5-xsl/stable,now 5.6.20+dfsg-0+deb8u1 amd64 [installed]
私のサーバーに PHP の 2 つのバージョンが共存する理由を誰かが説明してくれることを期待しています。また、それがデフォルトでインストールした php5 パッケージを指していることを確認できる方法があれば教えてくださいphp
。
ありがとう。
答え1
大変です。システムに何らかの異常があります。
Debian の方法では、/usr/bin/php
は へのシンボリックリンクである必要があり/etc/alternatives/php
、 は へのシンボリックリンクである必要があります/usr/bin/php5
。したがって、コマンドphp
とのバージョン情報が異なっている場合はphp5
、問題があります。
この代替機能により、同じシステムで同時に異なる PHP バージョンを使用できます。たとえば、php4 と php5 を使用できます。ただし、php5 の異なるバージョンは使用できません。これらのパッケージは、互いの代替品です。
時々、ソースベースまたは非 Debian の PHP インストールがシステム上で発生し、それが無駄になったと思います/usr/bin/php
。Debian Jessie では、上で書いたように、それはシンボリックリンクでなければなりません。
問題はこれが原因で発生します。非 Debian の PHP バージョンを削除し、dist-upgrade を実行することをお勧めします。非 Debian の PHP インストールでは他のファイルもインストールされている可能性があるため、システムのクリーンアップも役立つかもしれません。