CentOS7の環境にVim、httpd、PHPを導入して、mySQLを使った掲示板を作ろうとした話

準備中

CentOSに色々導入して掲示板を作ろうとした。

最近サーバーサイドの勉強をしているのですが、まったく上手くいかずにカメの様なノロノロ進行で開発を行っています。現在はPHPのfwriteが上手くいかずに二日も経過してしまいました。サーバー関連の勉強初心者の方も、同じような事で悩んでいるかもしれないので、問題解決のちょっとしたヒントがあれば幸いです。

まずVimがインストールされていなかった。

VimはLinax系のOSには標準装備だとどこかの記事で見たので、てっきりインストールされているものかと思っていました。ですが、Vimが無かったのでそのインストールから始めました。Vimが有無はバージョン情報を表示されられるかどうかで判断したと思います。

vim -v

だったかとおもいます。

ちなみに、文字色を常時指定した色にしておくことができていません。

:colorscheme evening

とVim上でコマンド入力すると、その時は設定されうまく行きますが、Vimを再起動すると、元に戻ってしまう状況です。

色々調べた結果、.vimrcというファイル内の設定を書き換えれば良いらしいですが、なんとかたどり着いた下記フォルダにも見つからず、途方に暮れています。

/usr/local/src/vim/

まだ、一つひとつのファイル内を見ていないので、どこかに正解の設定ファイルがあることを祈って、見て行こうかと考えて居ます。

httpdはドットインストールを参照

httpdはドットインストールの勉強をしていたので、その勉強中にインストールしていたようです。掲示板を表示させようとしたときに、毎回忘れてしまうのが

sudo systemctl start httpd.service

このコマンドを使ってサーバを起動させることをよく忘れます。ドットインストールの勉強の中で、

vagrant up

とした時に、同時にサーバを起動してくれるようにする設定も紹介されていましたが、systemctlコマンドに慣れるために、そのままにしてあります。

余談ですが、httpdの”d”の意味が未だによくわかっていません。”デーモン”ということで、常時待機しているserviceであるという認識です。”デーモン”で常時待機している便利な機能というと、ある格闘ゲームをネット対戦するためにパソコンにインストールしたソフトを思い出しました。同じようなものなのでしょうか?

PHPもいつの間にかインストールしていた。

あまりよく覚えていませんが、PHPもどこかのタイミングでインストールしていました。Vimと同様にバージョンを確認すると有無がわかります。

php -v

この段階で既に、CUI上でファイルを作成、実行は可能

試しに以下のコマンドを使って、動作確認をしてみました。

vim test.php

→以下test.php内に記述
<?php
$fp = fopen( “data.txt”, “a”);
fwrite($fp, “Test is OK\n”);
fclose($fp);
→記述終わり

php test.php

cat data.txt

以上の流れで実行するとtest.phpがdata.txtを自動で作成し”Test is OK”と記述してくれます。最後にcat data.txtで作成されたファイルの中身を確認すると、期待通りの実行結果、”Test is OK”がCUI上に表示されました。

ここまでは順調でした。しかし次のhttpdを使いhtmlを記述した掲示板の作成で上手くfwriteが上手く行きませんでした。

httpd上でのfwriteが上手くいかない件

【Cent OS7】PHPでfwriteができない こちらの記事と似たような状態でしょうか?

状況は、fopenでdata.txtをブラウザで確認すると、事前に記述した文字列は表示されるものの、fwriteの箇所は実行がうまくいっていないようで、data.txtに文字列が追加されません。

参考サイト同様に、パーミッションも777にしてみましたが、書き込みはできませんでした。

うーーむ…困った。

しかし、参考サイトのコメントを拝見していると、解決方法がありました!

SELinuxモードを変更する

SELinuxモードについては、こちらの参考サイト「SELinuxを無効にするにはを見てみるとわかりやすいとおもいます。確かにローカル開発環境上では、SELinuxモードを解除することで、fwriteを実行することが出来ました。

vi /etc/selinux/config

上記のコマンドで設定を変更します。ファイル内の中盤

SELINUX=enforcing

SELINUX=disabled

と変更するとfwriteが実行できるようになりました。しかし、これはセキュリティの脆弱性につながるかと思いますので、しっかりと見極めて先に進みたいと思います。少なからず、この状況で本番環境に移行してはダメだと考えて居ます。

以上、同じ現象でハマっていたいた人の解決ヒントに役立てられれば幸いです。

ではまた。

この記事を書いた人

小幡 知弘

1990年茨城県神栖市生まれ
2013年大阪芸術大学卒業
Python×Webエンジニア