14.10から16.04にアップグレードしたばかりで、ApacheでPHP 7を構成する方法がわかりません。 php7.0.confファイルを変更して、最後の行のコメントを外し、Apache2を再起動しましたが、変更はありませんでした。
Phpを許可するには、Apache2セットアップを変更する必要がありますか?
PHPはコマンドラインから機能するため、PHPが正しくインストールされていると確信しています。
さらに、phpstringでmbstringが欠落しているというエラーが表示されます。
前と同じように、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
他の欠落モジュールについても、同様にインストールする必要があるものがあります。
サーバーで実行するようにphp7を構成するには、いくつかの構成を行う必要があります。
1。php/php5
の痕跡を必ず削除してください
ターミナルを開く Ctrl+Alt+T そして:
cd /etc/Apache2/mods-enabled
ls -la
出力にはnotに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
ディレクトリに移動します。 Sudo rm <name>
によるphp/php5の痕跡も削除します。
次に、必要に応じて以下を実行します。
# 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
に多くの文字列が含まれている場合(文字通りheap ofを意味します)、いくつかの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が適切に構成されます。
この問題もありました。
すべての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
この問題の解決策は、short_open_tagのデフォルトのPHP.INI設定でした。デフォルトでは、これは「オフ」に設定されています。で始まるPHPコード
<?
の代わりに
<?php
(php.iniで 'Off'を 'On'に変更することによって)short_open_tagを有効にし、Apacheサーバーをリセットし(Sudo service Apache2 restart
)、PHPが生き返りました。
私の場合、phpが機能していなかっただけでなく、phpmyadminも私はそのようなステップバイステップでした
Sudo apt install php libapache2-mod-php
Sudo apt install php7.0-mbstring
Sudo a2dismod mpm_event
Sudo a2enmod mpm_prefork
service Apache2 restart
そして次に:
gksu gedit /etc/Apache2/Apache2.conf
最後の行にInclude /etc/phpmyadmin/Apache.conf
を追加します
それはすべての問題に対処する
私も、Ubuntu 16.04のコマンドラインからphpスクリプトを正常に実行できましたが、どのブラウザーでも実行できませんでした。この問題を解決するために、php7.0とApache2の既存のコピーを削除しました。その後、Apache2のphpライブラリを含むコマンドラインから両方を再インストールしました。 「a2enmod php7.0」を実行しようとすると、フラストレーションが続きました。これは、コマンドラインからphpスクリプトを再度実行できるという事実にもかかわらず、php7.0モジュールが存在しないことを通知しました。本能が作動しました。Synapticを開くと、コマンドラインからApache2 phpライブラリをインストールしたときに、libapache2-mod-php7.0のみをインストールし、「ラッパー」libapache2-mod-のインストールも忘れていました。 php、これがないと前者は機能しません。
https://wiki.archlinux.org/index.php/Apache_HTTP_Server
Sudo a2dismod mpm_event
Sudo a2enmod mpm_prefork
service Apache2 restart
注:libphp7.so
に含まれるphp-Apache
はmod_mpm_event
では機能しませんが、は機能するだけなので代わりにmod_mpm_prefork
。 ( FS#39218 )そうしないと、次のエラーが表示されます。
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. AH00013: Pre-configuration failed httpd.service: control process exited, code=exited status=1
別の方法として、
mod_proxy_fcgi
を使用できます(下記の php-fpmとmod_proxy_fcgiの使用 を参照)。