
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 が再び起動します。