0
Help us understand the problem. What are the problem?

posted at

updated at

Organization

[CentOS7] 古いバージョンのApacheとPHPを連携するまで

警告
この記事は、前回の記事 を読んだ前提で書いてます。
ご了承ください

リンク

はじめに

この記事は[CentOS7]Apacheの古いバージョンの導入とデーモン化の続きです。

Apacheインストール終わったけど、PHP使いたくてもできない!!!!!

ってことで一日使いました。無念。。
てか、デフォルトでできない分、普通の設定だとうまく動きません。なので、発生したインシデントと対応についてつらつら書きます。

経緯

先日上げた記事では、Apacheのインストール・デーモン化を行いました。
ウッキウキな僕はおもむろにPHPを記述。
Apacheを起動!
ブラウザで確認!!!

何も出ない。

\omg/

yum で PHPをインストールしただけだと、もとからあるApacheに設定を吸われるっぽい(そりゃそう。)

ってことで気合でどうにかしないといけません。

やったこと

  • デフォルトのApacheの設定ファイル(httpd.conf)を見に行く
    →/usr/local/apache2と比較するため
    →よくわからん

  • 「Apache PHP」と検索して一通り試す
    →動かない

うーん困った。。。

とりあえず、PHPinfoを出したい、、、
PHPinfoはコマンドライン上では見える。ブラウザでは見えん。ってかPHP動いてないし、なんかダウンロードされるし。

解決策

困ったのでデフォルトのApacheのmoduleを見に行きました。場所はfindコマンドとかで探して。

どうやらPHPのモジュールがあってそれをうまく読み込めていない状況。

httpd.conf
<IfModule !mod_php5.c>
  <IfModule prefork.c>
    LoadModule php7_module modules/libphp7.so
  </IfModule>
</IfModule>


<IfModule !mod_php5.c>
  <IfModule !prefork.c>
    LoadModule php7_module modules/libphp7-zts.so
  </IfModule>
</IfModule>

とりあえずこの辺をコピペ。

なんかびみょー

色々調べる。ふむふむ。

とりあえずできたコピペをこちらに

/usr/local/apache2/conf/httpd.conf
<Files ".user.ini">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
        Satisfy All
    </IfModule>
</Files>

AddType text/html .php

DirectoryIndex index.php

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>


AddHandler phpX.X-script .htm .html

<IfModule !mod_php5.c>
  <IfModule prefork.c>
    LoadModule php7_module modules/libphp7.so
  </IfModule>
</IfModule>


<IfModule !mod_php5.c>
  <IfModule !prefork.c>
    LoadModule php7_module modules/libphp7-zts.so
  </IfModule>
</IfModule>

そうそう。このLoadModuleってとこのmoduleは一応コピーしないとってことで、

cp -p /usr/lib64/httpd/modules/libphp7.so /usr/local/apache2/modules/
cp -p /usr/lib64/httpd/modules/libphp7-zts.so /usr/local/apache2/modules/

これでいけた。僕の場合。

あと、httpd -tSってコマンドがhttpd.confのエラーチェックなのでいっぱい使う。

なんか動かない場合(参考にならないかも)

前述しているように、デフォルトで入っているApacheがあります。httpd -tSコマンドを混在しないように消します。

sudo yum remove -y httpd apr apr-util httpd-tools

そうすると、デーモン化したApacheが動かなくなるので、再度make installしてあげてください。

そうすれば、systemctlから起動できると思います。

PHPファイルがダウンロードされるんだけど!

これはまじで糞だった。

意味わからんし。

まぁさっきのhttpd.confで治ったんだけど、一応使っているブラウザのCookieを削除しておきましょう。
多分治るはず。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?