16.04 にアップグレード。ブラウザで php7 が動作しない

16.04 にアップグレード。ブラウザで php7 が動作しない

14.10 から 16.04 にアップグレードしたばかりですが、Apache で PHP 7 を構成する方法がわかりません。php7.0.conf ファイルを変更して最後の行のコメントを解除し、apache2 を再起動しましたが、変化はありませんでした。

PHP を許可するには apache2 の設定を変更する必要がありますか?

PHP はコマンド ラインから動作するため、PHP が適切にインストールされていることは間違いありません。

さらに、phpadmin で mbstring が見つからないというエラーが表示されます。

答え1

以前と同様に、Apache 用の PHP をインストールする必要があります。

からサーバーガイド:

sudo apt install php libapache2-mod-php

このコマンドは、PHP と Apache 2 PHP モジュールをインストールします。 Apache を以前と同じように設定するだけです (sudo a2enmod php7.0はモジュールをオンにすると思います)。


あなたのmbstring問題も同様です - その拡張機能をインストールする必要があります:

sudo apt install php7.0-mbstring

他の不足しているモジュールについても、同様のものをインストールする必要があります。

答え2

サーバーで実行するように php7 を設定するには、いくつかの設定を行う必要があります。

1. 必ず痕跡を取り除いてくださいphp/php5

ターミナルCtrl+ Alt+を開きT、次の操作を実行します。

cd /etc/apache2/mods-enabled
ls -la

出力はないphp5.confまたは が含まれていますphp5.loadが、含まれている場合は、次の操作を実行します。

# this is the proper way of disabling modules
sudo a2dismod php5

# run this only if the above command didn't remove the php5 sym-links
sudo rm php5.load
sudo rm php5.conf

php7.0.conf代わりにと を追加しますphp7.0.load:

# this is the proper way of enabling modules
sudo a2enmod php7.0

# run this only if the above command didn't create the php7.0 sym-links
sudo ln -s php7.0.conf ../mods-available/php7.0.conf
sudo ln -s php7.0.load ../mods-available/php7.0.load

の出力はls -la php*次のようになります。

lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.conf -> ../mods-available/php7.0.conf
lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.load -> ../mods-available/php7.0.load

モジュールを扱った後は、ディレクトリに移ります/etc/apache2/conf-enabled。ここでもphp/php5の痕跡をすべて削除します。sudo rm <name>

その後、必要に応じて次の操作を実行します。

# the proper way of enabling configs
sudo a2enconf php7.0-cgi
sudo a2enconf php7.0-fpm

# do those commands only if the above didn't work out
sudo ln -s php7.0-cgi.conf ../conf-available/php7.0-cgi.conf
sudo ln -s php7.0-fpm.conf ../conf-available/php7.0-fpm.conf

の出力はls -la php*次のようになります。

lrwxrwxrwx 1 root root 33 Apr 21 17:00 php7.0-cgi.conf -> ../conf-available/php7.0-cgi.conf
lrwxrwxrwx 1 root root 33 Apr 21 17:01 php7.0-fpm.conf -> ../conf-available/php7.0-fpm.conf

2. Apache2の再起動

Apache を再起動する前に、Apache をクリーンアップしてからerror.log再起動してください。

sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart

次に、次のerror.logコマンドを発行して確認しますcat /var/log/apache2/error.log | less(less をパイプすると、簡単に上下にスクロールしてq出力を終了できます)。

もしあなたのerror.log中に多くの(文字通り)ヒープの)一部は、MIBS not found次のことを行います。

sudo apt install libsnmp-dev
sudo net-snmp-config --snmpconfpath
sudo apt-get install snmp snmp-mibs-downloader
sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart

もう一度確認すると、error.log次の 3 行のみが含まれているはずです。

[Sat Apr 23 01:39:07.504005 2016] [mpm_prefork:notice] [pid 1647] AH00169: caught SIGTERM, shutting down
[Sat Apr 23 01:39:08.685774 2016] [mpm_prefork:notice] [pid 9590] AH00163: Apache/2.4.18 (Ubuntu) mod_perl/2.0.9 Perl/v5.22.1 configured -- resuming normal operations
[Sat Apr 23 01:39:08.685938 2016] [core:notice] [pid 9590] AH00094: Command line: '/usr/sbin/apache2'

これで、php7.0 を使用した Apache が適切に設定されるはずです。

答え3

私もこの問題に遭遇しました。

すべての PHP を削除して php7 を再インストールするのに役立ちました。

必要だったのは以下の通り。

sudo apt-get purge php*

php7 は削除され、その後再インストールするだけです。

sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi  php7.0 libapache2-mod-php7.0

答え4

この問題の解決策として私が見つけたのは、PHP.INIのshort_open_tagのデフォルト設定でした。デフォルトではこれは「オフ」に設定されています。私のPHPコードは次のように始まりました。

   <?

の代わりに

   <?php

short_open_tag を有効にし (php.ini で「Off」を「On」に変更)、Apache サーバーをリセットすると ( sudo service apache2 restart)、PHP が再び起動します。

関連情報