web-dev-qa-db-ja.com

PHPコマンドラインでは機能しますが、ブラウザでは機能しません

コマンドラインから基本的な「helloworld」phpスクリプトを実行し、コマンドphp test.phpを実行すると、有効なhtmlページが返されます。ただし、ブラウザでアクセスしようとすると、有効なhtmlではなく、phpスクリプトのテキストが返されます。

Phpスクリプト「test.php」は次のとおりです。

<html>
<head>
  <title>PHP Test</title>
</head>
<body>
  <?php

     echo '<p>Hello World</p>';

   ?>
</body>
</html>

RaspbianでApacheを実行しています。

1
user3273814

ユーザーAlexの回答に追加するには、libapache2-mod-php5パッケージがインストールされます。上記のパッケージがインストールされていないと、Apacheは機能しません。インストールするには、

Sudo apt install libapache2-mod-php5

このパッケージをインストールすると、Apacheによってロードされるモジュールにphpが自動的に追加されます。

0
user3273814

PHPは、さまざまな操作モードで実行される場合があります。

コマンドプロンプトから実行する場合はコンソールインタープリターにすることも、CGIとして実行することも、サービスとして実行することもできます-php-fpm、Apacheのモジュールとして実行することも、Webサーバー自体にすることもできます。

ブラウザでphpスクリプトを実行する最も簡単な方法は、組み込みのWebサーバーを使用します。
php -S ip.ip.ip.ip:port -t /path/to/directory/where/php/files/livesを実行してip.ip.ip.ipをRaspberryPiに割り当てられたIPアドレスに置き換え(ifconfigから取得)、portを組み込みサーバーが必要なポートに置き換えます接続をリッスンします(8000にします)。ブラウザでhttp://ip.ip.ip.ip:port/your-script.phpを指定すると、Apacheをまったく実行しなくても必要なものを取得できます。

それでもApacheを介してphpを実行したい場合は、どのようにインストールしたかを理解する必要があります。

PhpをApacheモジュールとして実行する必要があるかどうかを確認する手順:
Apache2ctl -Mを実行し、phpモジュールがロードされているかどうかを確認します。そこにない場合は、Sudo a2enmod phpX(Xはphpバージョン)を有効にして、次のコマンドでApacheをリロードする必要があります。
Sudo service Apache2 reload

Phpをphp-fpmサービスとして実行する必要があるかどうかを確認する手順:
phpをphp-fpmサービスとしてインストールする場合は、実行されているかどうかを確認する必要があります。
ps aux | grep 'php-fpm'
実行中の場合は、Apacheインスタンスをプロキシとして機能するように構成する必要があります。公式 Apacheドキュメント を使用して設定します。 phpがApacheモジュールとして実行される場合と比較すると、セットアップはより複雑ですが、実稼働環境で通常必要となる多くの利点があります。

Phpをphp-cgiとして実行する必要があるかどうかを確認する手順(このモードでは、誰かがphpファイルを要求するたびにApacheによってphpが呼び出されます):
次の設定が存在するかどうか、Apacheの構成ファイルを確認してください。

ScriptAlias /local-bin /usr/bin
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php5 /local-bin/php-cgi
1
Alex