質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

4265閲覧

EC2にApacheサーバーを入れてphpを動かしたいが、ブラウザ上でphpのコードがそのまま表示されてしまう

bigbox267

総合スコア31

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/05/21 00:22

編集2020/05/21 00:23

前提・実現したいこと

EC2にApacheサーバーを入れてphpを動かしたいが、ブラウザ上でphpのコードがそのまま表示されてしまいます。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html
こちらのサイトを参考にして
EC2にApacheサーバーとphpをインストールしました。
しかし、phpinfoを表示するところでphpコードがそのまま表示されてしまいました。
phpを動作させるにはどうしたらいいでしょうか?

発生している問題・エラーメッセージ

phpがコードのまま表示されてしまう。
実際の表示画面

試したこと

https://qiita.com/reflet/items/3359762dd1e2e1c39509
こちらのサイト参考にしてphpがインストールできているか確認しました。

実行結果↓
$ php -v
PHP 7.2.30 (cli) (built: May 5 2020 18:04:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

$ yum list installed mariadb* | grep amzn2extra-lamp-mariadb10.2-php7.2
mariadb.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-backup.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-common.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-config.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-errmsg.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-libs.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-server.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2
3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2

下記のコマンドを実行してactive (running)であることを確認しました。
$ sudo systemctl status php-fpm.service
$ sudo systemctl status httpd

下記のコマンドを実行してエキストラが有効になっていることを確認しました。
$ amazon-linux-extras
php7.2=latest enabled
[ =7.2.0 =7.2.4 =7.2.5 =7.2.8 =7.2.11 =7.2.13 =7.2.14
=7.2.16 =7.2.17 =7.2.19 =7.2.21 =7.2.22 =7.2.23
=7.2.24 =7.2.26 =stable ]
17 lamp-mariadb10.2-php7.2=latest enabled
[ =10.2.10_7.2.0 =10.2.10_7.2.4 =10.2.10_7.2.5
=10.2.10_7.2.8 =10.2.10_7.2.11 =10.2.10_7.2.13
=10.2.10_7.2.14 =10.2.10_7.2.16 =10.2.10_7.2.17
=10.2.10_7.2.19 =10.2.10_7.2.22 =10.2.10_7.2.23
=10.2.10_7.2.24 =stable ]
18 libreoffice available
[ =5.0.6.2_15 =5.3.6.1 =stable ]
19 gimp available [ =2.8.22 ]
20 docker=latest enabled
[ =17.12.1 =18.03.1 =18.06.1 =18.09.9 =stable ]
21 mate-desktop1.x available
[ =1.19.0 =1.20.0 =stable ]
22 GraphicsMagick1.3 available
[ =1.3.29 =1.3.32 =1.3.34 =stable ]
23 tomcat8.5 available
[ =8.5.31 =8.5.32 =8.5.38 =8.5.40 =8.5.42 =8.5.50
=stable ]
24 epel=latest enabled [ =7.11 =stable ]

補足情報(FW/ツールのバージョンなど)

AMI:Amazon Linux 2
$cat /etc/system-release
Amazon Linux release 2 (Karoo)

server:Apache
$ apachectl -v
Server version: Apache/2.4.41 ()
Server built: Oct 22 2019 22:59:04

php:7.2.30
$ php -v
PHP 7.2.30 (cli) (built: May 5 2020 18:04:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

phpinfo.phpの内容

php

1<?php 2 phpinfo(); 3?>

phpinfo.phpのルート
$ ls /var/www/html
index.html phpinfo.php

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Apache はそのままでは .php をどう解釈していいのか、特殊な規定がありません。
その場合、Apache はそれを「普通のテキストファイル」として扱い、その内容をそのまま表示します
※まさに現状がその通りです

つまり、Apache に対して .php が来たら「処理を PHP に任せてその答えをコンテンツとして返す」ように設定を付け加えねばなりません。

手順通りにやっていれば、正しく設定されているはずなのですが。

/etc/httpd/conf.d/php.conf の中がおかしくなっているのですかね?

php-fpm を使うなら、こんな記述があるはずです。

# # Redirect to local php-fpm (no mod_php in default configuration) # <IfModule !mod_php5.c> <IfModule !mod_php7.c> # Enable http authorization headers SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 <FilesMatch .(php|phar)$> SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" </FilesMatch> </IfModule> </IfModule>

投稿2020/05/21 01:14

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bigbox267

2020/05/21 05:03

確かにありました。 ソケット?のファイルの指定しているようなので自分の環境にあわせて記述を変えてみたのですがうまく動きませんでした。 以下/etc/httpd/conf.d/php.confの中 # The following lines prevent .user.ini files from being viewed by Web clients. # <Files ".user.ini"> Require all denied </Files> # # Allow php to handle Multiviews # AddType text/html .php # # Add index.php to the list of files that will be served as directory # indexes. # DirectoryIndex index.php # # Redirect to local php-fpm (no mod_php in default configuration) # <IfModule !mod_php5.c> <IfModule !mod_php7.c> # Enable http authorization headers SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 <FilesMatch .(php|phar)$> #SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" SetHandler "proxy:unix:/var/run/php-fpm/www.sock|fcgi://localhost" </FilesMatch> </IfModule> </IfModule> # # mod_php is deprecated as FPM is now used by default with httpd in event mode # mod_php is only used when explicitly enabled or httpd switch to prefork mode # # mod_php options # <IfModule mod_php7.c> # # Cause the PHP interpreter to handle files with a .php extension. # <FilesMatch .(php|phar)$> SetHandler application/x-httpd-php </FilesMatch> # # Uncomment the following lines to allow PHP to pretty-print .phps # files as PHP source code: # #<FilesMatch .phps$> # SetHandler application/x-httpd-php-source #</FilesMatch> # # Apache specific PHP configuration options # those can be override in each configured vhost # php_value session.save_handler "files" php_value session.save_path "/var/lib/php/session" php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache" #php_value opcache.file_cache "/var/lib/php/opcache" </IfModule>
tacsheaven

2020/05/21 05:31

socket の位置は /etc/php-fpm.d/www.conf で listen = /run/php-fpm/www.sock として決まっているのですから、Apache 側でそこを指定してなければ連携できません。Apache の conf だけ書き換えて、php-fpm の conf を書き換えてないからでしょう。 ※そもそもここを書き換える必要は(php-fpm を複数起動でもしない限り)ないはずです
guest

0

自己解決

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html
こちらのページの「オプション: オートメーション を使用してこのチュートリアルを完了する」を実行して新しいインスタンスを作成しました。
結局原因は不明でした。

投稿2020/05/21 12:52

bigbox267

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問