web-dev-qa-db-ja.com

16.04にアップグレードします。 php7がブラウザーで機能しない

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

Phpを許可するには、Apache2セットアップを変更する必要がありますか?

PHPはコマンドラインから機能するため、PHPが正しくインストールされていると確信しています。

さらに、phpstringでmbstringが欠落しているというエラーが表示されます。

69
David Wright

前と同じように、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

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

81
Thomas Ward

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

1。php/php5の痕跡を必ず削除してください

ターミナルを開く Ctrl+Alt+T そして:

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

出力にはnotphp5.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.confphp7.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が適切に構成されます。

40
Videonauth

この問題もありました。

すべての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
12

この問題の解決策は、short_open_tagのデフォルトのPHP.INI設定でした。デフォルトでは、これは「オフ」に設定されています。で始まるPHPコード

   <?

の代わりに

   <?php

(php.iniで 'Off'を 'On'に変更することによって)short_open_tagを有効にし、Apacheサーバーをリセットし(Sudo service Apache2 restart)、PHPが生き返りました。

7
patrick

私の場合、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を追加します

それはすべての問題に対処する

7
Maciej

私も、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、これがないと前者は機能しません。

0
Bill Wilken

https://wiki.archlinux.org/index.php/Apache_HTTP_Server

Sudo a2dismod mpm_event
Sudo a2enmod mpm_prefork
service Apache2 restart
注:libphp7.soに含まれるphp-Apachemod_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の使用 を参照)。

0
user539644