「CentOS6」と「apache2.4」の組み合わせでPHPソースコードが表示される

投稿者: Anonymous

従来の環境
・CentOS6
・apache2.2
・PHP7.1
・「/etc/httpd/conf.d/php70-php.conf」でPHP指定している

$ cd /usr/lib64/httpd/modules
$ ls -la
lrwxrwxrwx 1 root root      55  8月 24 09:02 2017 libphp70.so -> 
/opt/remi/php70/root/usr/lib64/httpd/modules/libphp7.so

$ cd /opt/remi/php70/root/usr/lib64/httpd/modules/    
$ ls -la   
-rwxr-xr-x 1 root root 4541392  8月  2 21:13 2017 libphp7.so

試していること
・「CentOS Software Collections」経由で「Apache2.4」をインストール

「/opt/rh/httpd24/root/etc/httpd/conf/httpd.conf」
・modules/libphp7.soで指定しても読み込まれないので、フルパスで指定するもエラー

#LoadModule php7_module modules/libphp7.so
#LoadModule php7_module /etc/httpd/modules/libphp7.so
LoadModule php7_module /opt/remi/php70/root/usr/lib64/httpd/modules/libphp7.so
PHPIniDir conf/extra
<FilesMatch ".(php|php7|phtml)$">
  SetHandler application/x-httpd-php
</FilesMatch>

# sudo /etc/rc.d/init.d/httpd24-httpd start
httpd を起動中: httpd: Syntax error on line 372 of /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf:
Cannot load /etc/httpd/modules/libphp7.so into server:
/etc/httpd/modules/libphp7.so: undefined symbol: unixd_config

Q1.
・httpd.confでのモジュール読込はフルパス指定不可?

Q2.
・「undefined symbol: unixd_config」って何ですか?

関連


追記

「/opt/remi/php70/enable」

export PATH=/opt/remi/php70/root/usr/bin:/opt/remi/php70/root/usr/sbin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/opt/remi/php70/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MANPATH=/opt/remi/php70/root/usr/share/man:${MANPATH}

解決

PHP は remi-php70 から入れたようですが、
その libphp7.so が参照するライブラリの場所を httpd24 に知らせる必要があります。
/opt/remi/php70/enable
というファイルがあると思うので、その内容を
/opt/rh/httpd24/root/etc/sysconfig/httpd
に書いてから
sudo /etc/rc.d/init.d/httpd24-httpd start
を再実行してみてください。

Edit 1: unixd_config は suzukis さんがいうように Apache 2.2 のものでした。ですので、そのPHPのビルドでは Apache 2.4 とはうごかせないようです。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *