新しいサーバー (centos 6.3) に php-5.4.8 をコンパイルしてインストールし、php.ini と httpd.conf を設定した後、apache-2.4.3 を起動するときに、コマンド /usr/local/apache2/ を実行します。 bin/apachectl が起動すると、プロンプト:
httpd: /etc/httpd/conf/httpd.conf の 146 行目の構文エラー: /usr/local/apache/modules/libphp5.so をサーバーにロードできません: /usr/ local/apache/modules/libphp5.so: 未定義のシンボル: zend_parse_parameters検索により、bison が欠落していることがわかりました。
rpm -qa|grep bison を通じて bison がインストールされていないことがわかった場合は、bison をインストールしてください。 Centos は yum install bison
を使用できますが、bison-2.4.1 がすでにインストールされていることがわかりました。結局、bison-2.5のrpmパッケージをダウンロードして直接インストールするしかありませんでした。
[root@localhost ~]# wget http://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz [root@localhost ~]# tar -zxvf bison-2.5.tar.gz [root@localhost ~]# cd bison-2.5 [root@localhost ~]# ./configure [root@localhost ~]# make && make install
PHP を再コンパイルしてインストールします。次に、/usr/local/apache2/bin/apachectl start Apache を起動します。 PHP の Web ページをテストしたところ、正常に起動できることに驚きました。正常にアクセスできました。
他の方から以下のエラーが報告されるそうなので、私も書いておきます。
/usr/local/apache2/bin/apachectl start コマンドを実行すると、次のようなエラー メッセージが表示されます:
httpd: /usr/local/apache の 146 行目に構文エラーがあります/conf/httpd.conf: /usr/local/apache/modules/libphp5.so をサーバーにロードできません: /usr/local/apache/modules/libphp5.so: reloc 後にセグメント prot を復元できません: アクセス許可が拒否されました
これは SELinux 保護モードが原因です。これを解決するには 2 つの方法があります。
最初のモード: SELinux 保護モードを永続的にオフにする (推奨されません。サーバーにリスクが生じます)
[root@localhost ~]# vi /etc/selinux/config
SELINUX=enforcing を SELINUX=disabled に変更します
保存システムを再起動します。
2 番目の方法: selinux モードを一時的にオフにする[root@localhost ~]# setenforce 0 [root@localhost ~]# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so
上記のコマンドでエラーが報告された場合は、次のコマンドを試してください。 chcon -t texrel_shlib_t /usr/local/apache/modules/libphp5.so
それでもエラーが出る場合はヘルプを参照し、ヘルプに従ってコマンドを書いてください。
[root@localhost ~]# service httpd restart [root@localhost ~]# setenforce 1