インフラ系エンジニアなのであまり手広くプログラム言語を扱いたくないのですが、現在以下のプログラム言語を勉強しています。
Python ← 趣味
Ruby ← 業務&趣味
PHP ← 業務&趣味
今回は PHP のインストールと動作確認的に簡単な PHP プログラムを作成します。
目標はインフラ構成管理業務で業務を効率化できる Web アプリの開発です。
PHP のインストール
環境は CentOS 7.4 です。
CentOS ではデフォルトで PHP はインストールされていません。(CentOS インストール時に Core を選択した場合)
そのため、手動でインストールする必要があります。
→ Python はデフォルトでインストールされています。
[root@test07 ~]# php ← デフォルトで PHP がインストールされていません。少々寂しいですね。
bash: php: コマンドが見つかりませんでした…
php は yum コマンドでインストールできます。
[root@test07 ~]# yum install php
読み込んだプラグイン:fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base | 3.6 kB 00:00:00
epel/x86_64/metalink | 6.4 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 3.4 kB 00:00:00
ius | 2.3 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/6): epel/x86_64/group_gz | 266 kB 00:00:00
(2/6): epel/x86_64/updateinfo | 892 kB 00:00:00
(3/6): extras/7/x86_64/primary_db | 166 kB 00:00:01
(4/6): ius/x86_64/primary_db | 250 kB 00:00:01
(5/6): updates/7/x86_64/primary_db | 6.0 MB 00:00:04
(6/6): epel/x86_64/primary_db | 6.2 MB 00:00:05
Determining fastest mirrors
* epel: ftp.iij.ad.jp
* ius: hkg.mirror.rackspace.com
依存性の解決をしています
–> トランザクションの確認を実行しています。
—> パッケージ php.x86_64 0:5.4.16-43.el7_4 を インストール
–> 依存性の処理をしています: php-common(x86-64) = 5.4.16-43.el7_4 のパッケージ: php-5.4.16-43.el7_4.x86_64
–> 依存性の処理をしています: php-cli(x86-64) = 5.4.16-43.el7_4 のパッケージ: php-5.4.16-43.el7_4.x86_64
–> 依存性の処理をしています: libcrypto.so.10(OPENSSL_1.0.2)(64bit) のパッケージ: php-5.4.16-43.el7_4.x86_64
–> トランザクションの確認を実行しています。
—> パッケージ openssl-libs.x86_64 1:1.0.1e-60.el7_3.1 を 更新
–> 依存性の処理をしています: openssl-libs(x86-64) = 1:1.0.1e-60.el7_3.1 のパッケージ: 1:openssl-1.0.1e-60.el7_3.1.x86_64
—> パッケージ openssl-libs.x86_64 1:1.0.2k-8.el7 を アップデート
—> パッケージ php-cli.x86_64 0:5.4.16-43.el7_4 を インストール
—> パッケージ php-common.x86_64 0:5.4.16-43.el7_4 を インストール
–> 依存性の処理をしています: libzip.so.2()(64bit) のパッケージ: php-common-5.4.16-43.el7_4.x86_64
–> トランザクションの確認を実行しています。
—> パッケージ libzip.x86_64 0:0.10.1-8.el7 を インストール
—> パッケージ openssl.x86_64 1:1.0.1e-60.el7_3.1 を 更新
—> パッケージ openssl.x86_64 1:1.0.2k-8.el7 を アップデート
–> 依存性解決を終了しました。
依存性を解決しました
========================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
========================================================================================================
インストール中:
php x86_64 5.4.16-43.el7_4 updates 1.4 M
依存性関連でのインストールをします:
libzip x86_64 0.10.1-8.el7 base 48 k
php-cli x86_64 5.4.16-43.el7_4 updates 2.7 M
php-common x86_64 5.4.16-43.el7_4 updates 565 k
依存性関連での更新をします:
openssl x86_64 1:1.0.2k-8.el7 base 492 k
openssl-libs x86_64 1:1.0.2k-8.el7 base 1.2 M
トランザクションの要約
========================================================================================================
インストール 1 パッケージ (+3 個の依存関係のパッケージ)
更新 ( 2 個の依存関係のパッケージ)
総ダウンロード容量: 6.4 M
Is this ok [y/d/N]: y
Downloading packages:
No Presto metadata available for base
(1/6): libzip-0.10.1-8.el7.x86_64.rpm | 48 kB 00:00:01
(2/6): openssl-1.0.2k-8.el7.x86_64.rpm | 492 kB 00:00:01
(3/6): openssl-libs-1.0.2k-8.el7.x86_64.rpm | 1.2 MB 00:00:01
(4/6): php-5.4.16-43.el7_4.x86_64.rpm | 1.4 MB 00:00:03
(5/6): php-common-5.4.16-43.el7_4.x86_64.rpm | 565 kB 00:00:00
(6/6): php-cli-5.4.16-43.el7_4.x86_64.rpm | 2.7 MB 00:00:03
——————————————————————————————————–
合計 1.1 MB/s | 6.4 MB 00:00:05
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
更新します : 1:openssl-libs-1.0.2k-8.el7.x86_64 1/8
インストール中 : libzip-0.10.1-8.el7.x86_64 2/8
インストール中 : php-common-5.4.16-43.el7_4.x86_64 3/8
インストール中 : php-cli-5.4.16-43.el7_4.x86_64 4/8
インストール中 : php-5.4.16-43.el7_4.x86_64 5/8
更新します : 1:openssl-1.0.2k-8.el7.x86_64 6/8
整理中 : 1:openssl-1.0.1e-60.el7_3.1.x86_64 7/8
整理中 : 1:openssl-libs-1.0.1e-60.el7_3.1.x86_64 8/8
検証中 : php-cli-5.4.16-43.el7_4.x86_64 1/8
検証中 : php-5.4.16-43.el7_4.x86_64 2/8
検証中 : php-common-5.4.16-43.el7_4.x86_64 3/8
検証中 : 1:openssl-libs-1.0.2k-8.el7.x86_64 4/8
検証中 : libzip-0.10.1-8.el7.x86_64 5/8
検証中 : 1:openssl-1.0.2k-8.el7.x86_64 6/8
検証中 : 1:openssl-1.0.1e-60.el7_3.1.x86_64 7/8
検証中 : 1:openssl-libs-1.0.1e-60.el7_3.1.x86_64 8/8
インストール:
php.x86_64 0:5.4.16-43.el7_4
依存性関連をインストールしました:
libzip.x86_64 0:0.10.1-8.el7 php-cli.x86_64 0:5.4.16-43.el7_4 php-common.x86_64 0:5.4.16-43.el7_4
依存性を更新しました:
openssl.x86_64 1:1.0.2k-8.el7 openssl-libs.x86_64 1:1.0.2k-8.el7
完了しました!
[root@test07 ~]#
php のバージョンは「5.4.16」 です。
少々古いです。
[root@test07 ~]# php -v
PHP 5.4.16 (cli) (built: Nov 15 2017 16:33:54)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
なぜ PHP のバージョンが古いのか?
CentOS の考え方というか哲学で、「CentOSはエンタープライズ(企業)用に開発されているので枯れたバージョンしか取り扱わない」というポリシーがあります。
現に CentOS の公式サイトでも以下のように記載があります。
https://wiki.centos.org/FAQ/General#head-472ce8446ebcfc82ca1800f775ba0e629ac835c7
最後に「It’s a feature not a deficiency.」 と記載があり「これは特徴であり欠点ではありません」 ということを言っています。
ちなみに Python のバージョンも古いです。
いまだに「Python 2.7.5」 を OS のデフォルト Python バージョンとして使用しています。
[root@test07 ~]# python
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> exit()
[root@test07 ~]#
動作確認(Apache)を使って POST データ送信
まずは Apache が正常に起動しているか確認します。
[root@cent07 ~]# systemctl -l status httpd
● httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 土 2018-02-24 00:16:22 JST; 1 day 15h ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 26167 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
Main PID: 1051 (httpd)
Status: “Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec”
CGroup: /system.slice/httpd.service
tq 1051 /usr/sbin/httpd -DFOREGROUND
tq 2819 /usr/sbin/httpd -DFOREGROUND
tq 2820 /usr/sbin/httpd -DFOREGROUND
tq 2821 /usr/sbin/httpd -DFOREGROUND
tq26180 /usr/sbin/httpd -DFOREGROUND
tq26182 /usr/sbin/httpd -DFOREGROUND
tq26184 /usr/sbin/httpd -DFOREGROUND
tq26185 /usr/sbin/httpd -DFOREGROUND
tq26186 /usr/sbin/httpd -DFOREGROUND
mq26187 /usr/sbin/httpd -DFOREGROUND
2月 24 00:16:00 cent07.localdomain systemd[1]: Starting The Apache HTTP Server…
2月 24 00:16:22 cent07.localdomain systemd[1]: Started The Apache HTTP Server.
2月 24 03:50:02 cent07.localdomain systemd[1]: Ignoring invalid environment assignment ‘export LD_PRELOAD=/usr/lib64/libutil.so’: /etc/sysconfig/httpd
2月 24 03:50:02 cent07.localdomain systemd[1]: Ignoring invalid environment assignment ‘export LD_LIBRARY_PATH=/usr/local/lib’: /etc/sysconfig/httpd
2月 24 03:50:03 cent07.localdomain systemd[1]: Reloaded The Apache HTTP Server.
2月 25 03:34:01 cent07.localdomain systemd[1]: Ignoring invalid environment assignment ‘export LD_PRELOAD=/usr/lib64/libutil.so’: /etc/sysconfig/httpd
2月 25 03:34:01 cent07.localdomain systemd[1]: Ignoring invalid environment assignment ‘export LD_LIBRARY_PATH=/usr/local/lib’: /etc/sysconfig/httpd
2月 25 03:34:02 cent07.localdomain systemd[1]: Reloaded The Apache HTTP Server.
[root@cent07 ~]#
Apache が自動起動になっているか確認します。
[root@cent07 ~]# systemctl list-unit-files | grep httpd
httpd.service enabled ← 自動起動が「ON(enabled)」の設定になっています。
[root@cent07 ~]#
Web画面が表示されるか確認します。
ブラウザを起動し「URL欄」 に「IPアドレス」 を入力します。
問題なく初期ページが表示されました。
POST確認用プログラム
■POSTデータ送信プログラム
[root@cent07 html]# pwd
/var/www/html
[root@cent07 html]# ls
ResPost.php _old post.php
[root@cent07 html]# vi post.php
<!DOCTYPE html>
<html>
<body>
<form method=”POST” action=”ResPost.php”>
一言どうぞ:<br>
<input type=”text” name=”comments” size=”20″ /><br>
<input type=”submit” value=”送信” />
</form>
</body>
</html>
[root@cent07 html]#
■POSTデータ表示プログラム
[root@cent07 html]# vi ResPost.php
<!DOCTYPE html>
<html>
<head>
<meta charset=’UTF-8′ />
<title>Sample</title>
<body>
あなたの一言<br>
<?php print $_POST[‘comments’]; ?><br>
です。<br>
</body>
</head>
</html>
[root@cent07 html]#
Web アプリの動作確認
post.php ページにアクセスします。
例えば、IPアドレスが「192.168.1.12」の場合は「http://192.168.1.12/post.php」 にアクセスをします。
何かを入力して「送信」 ボタンをクリックします。
先ほど入力したデータが表示されます。
コメント