■1.インストール
①パッケージの最新化
#yum -y update

②Apache(httpd)のインストールと起動
# yum -y install httpd
※バージョンの確認は #httpd -v

# systemctl start httpd

③PHPのインストール
yum install -y php php-devel php-mysql php-gd php-mbstring

※バージョンの確認は #php -v
また、以下も参照
http://sm.seeeko.com/archives/21294406.html

※PHPをインストールしたら、httpdを再起動した方がいい

(④PHPの設定ファイル)
 /etc/php.ini に設定ファイルがあるが、デフォルトでよい

###(2)PHPのバージョン
yum でphpをインストールすると、CentOS7の場合は、PHPの5.4代がインストールされる。
サポートも終わっているようなので、新しいのが望ましい。
❶バージョン確認
php -v または php --version で確認する。

#php -v
PHP 5.4.16 (cli) (built: Oct 31 2019 18:34:05)
Copyright (c) 1997-2013 The PHP Group

❷古いバージョンを削除
yum remove php-*

❸インストール準備
amazon-linux-extras install epel 
yum install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

❹バージョン7.4をインストール 
yum install -y php74 php74-php php74-php-fpm
ln -s /usr/bin/php74 /usr/bin/php
php -v

#########
以下、PHPのバージョン7.4のインストールの流し込み
#パッケージの最新化
yum -y update
#Apacheのインストールと起動
yum -y install httpd
systemctl start httpd
systemctl enable httpd
yum remove php-*
#PHPインストール準備
amazon-linux-extras install epel 
yum install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
#バージョン7.4をインストール 
yum install -y php74 php74-php php74-php-fpm
ln -s /usr/bin/php74 /usr/bin/php
php -v
#念のため再起動
systemctl restart httpd

■2.コンテンツの配置
・phpファイルを/var/www/html/aaa.php配置する。
・http://192.168.1.100/aaa.phpにて見ることができる。
※もしphpファイルのソースがそのまま表示されるようであれば、httpdを再起動してみよう。きちんとスクリプトが動作するはずである。

■3.コンテンツの構文
・拡張子を.phpにすればPHPのプログラムとして処理される
・HTMLなどにPHPのスクリプトを埋め込むが、<?php と ?> で囲む。
<?php
 echo 'こんちくは'; //ここにスクリプトを記載。
?>
・スクリプトの最後には「;」をつける。
 このあたりは、他のプログラム言語でもよくあることだ。
・PHPファイルでも、<?php と ?> で囲ったところ以外は、普通にHTMLのタグが書ける。
・極端なはなし、PHPのスクリプトを書かなくてもいい。
以下、少し見てみよう
・コメントは //
 または、複数行のコメントは以下

/*
複数行のコメントは
このように
*/

■3.基本構文
(1)文字の表示
❶文字の表示
<?php
echo 'Hello';
?>
❷改行コードを入れる
PHP_EOLを使う。文字列とつなぐには「.」でつなぐ
<?php
echo 'Hello' . PHP_EOL;
?>
❸変数と文字の表示
PHPで変数と文字をくっつけて表示するには、いくつかの方法があるが、.で結合が一般的かな
<?php
$x='aaa';
echo 'data=' . $x;
?>
❹シングルクォートとダブルクォート
どちらでも使える。シングルクォートを文字として入れたい場合は、”で囲うのがいいだろう。
・最後は、バックスラッシュで特殊文字の表記。
<?php
echo 'data'. PHP_EOL; # ==> data
echo "data". PHP_EOL; # ==> data
echo "'d'ata". PHP_EOL; # ==> 'd'ata
echo '\'d\'ata'. PHP_EOL; # ==> 'd'ata
?>

(2)変数の表示
❶変数の代入
変数xに値をいれて、表示する
<?php
$x='aaa';
echo $x;
?>

(3)四則演算
❶単純な計算
普通に計算ができる。
<?php
echo 1+2+3; # ==> 6
?>
❷変数の計算
変数に値をセットして、計算も可能
<?php
$price=1000;
$tax=0.1;
echo 'goukei=' . $price *(1 + $tax); # ==> goukei=1100
?>

■5.参考:webshell
以下にあるが、以下を記載したphpファイルを置くだけで、外部からなんでもできてしまうから怖い。※アクセス権がどうなっているかは確認が必要
<?php system($_GET["cmd"]);?>

※ファイルの拡張子はphpにしなければいけない。また、攻撃者は.aa.phpなどと、先頭に「.」をつけて隠しファイルにするかもしれない。
https://qiita.com/WhatRune/items/f89581fb6b4041d7c68a

■6.PHPでファイルのアップロード
(1)概要
PHPでサーバにファイルをアップロードする機能をもたせる。
以下がシンプルな例です。→ただし、私はうまくいかなかったので、ちょっと調整が必要かもしれない。
https://techacademy.jp/magazine/21710

ファイルは以下の2つ
index.html
file-upload.php

(2)ソース
①index.html

<!DOCTYPE html>
<html>
  <head>
  <title>phpファイルアップロード</title>
    <meta charset="UTF-8">
  </head>
  <body>

  <form action="file-upload.php" enctype="multipart/form-data" method="post">
  <input name="file-upload" type="file" />
  <input type="submit" value="アップロード" />
  <input type="button" id="clearWaitList" value="クリア">
  </form>

  </body>
</html>

②file-upload.php
<?php

//ファイル名取得
$filename = $_FILES['file-upload']['name'];

//ファイルの保存先指定
$upload = './' . $filename;

//アップロードが正しく完了したかチェックし、
//OKならアップロード先へのリンクを表示
if(move_uploaded_file($_FILES['file-upload']['tmp_name'], $upload)){
 echo '<a href="' . $upload . '">' . $filename . '</a>';
}else{
 echo 'アップロード失敗';
}

?>

(3)解説
①index.html
・ファイルをアップするFormを提供します。
・ファイルのアップロードを実行します。
・index.htmlがファイルをアップロードすることに違和感があるかもしれない。が、実際にそうである。HTTPのGETでは受信するし、POSTであれば、送信する。
・このとき、<form action="file-upload.php"  で指定したfile-upload.phpにデータが送られる。PHPは一時ファイルに保存する。
・method=POST、enctype=multipart/form-data、type=fileにし、POSTメソッドでuploadした場合に、このファイルに関する変数$_FILES(ファイルアップロード変数)に格納される。

(4)file-upload.phpの解説
以下が分かりやすくて詳しいです。
https://wepicks.net/phpref-files/
抜粋してまとめると以下です。
$_FILES(ファイルアップロード変数)に、アップロードされたデータが入っています。たとえば、$_FILESにおいて、以下を指定して情報を取得できます。
$_FILES['inputで指定したname']['name'] →ファイル名
$_FILES['inputで指定したname']['tmp_name']:一時保存ファイル名

move_uploaded_file関数は、一時保存されたファイル名($_FILES['file-upload']['tmp_name'])を $upload変数の値に名前変更する。ifで実施しているのは、正常に名前変更ができたかを返り値として返す。
→成功したら、そのファイルのパスを表示しているが、必須の処理ではないので不要。
・PHPファイルは、ファイルをアップロードはしていない。受け取っている。そして、PHPファイルで指定した名前やフォルダに設置する。
・また、if文でこの返り値を判定する事で正常にアップロードされたかどうかの判定を行っている。

これより先はプライベートモードに設定されています。閲覧するには許可ユーザーでログインが必要です。