http://wecoo.iteye.com/blog/1119812 php安裝
安裝php-5.3.4.tar.bz2首先要安裝libxml2而且版本不低于2.6.11,這里我選擇的libxml2-2.6.30.tar.bz2
[root@localhost root]# tar xjvf libxml2-2.6.31.tar.bz2
[root@localhost root]# cd libxml2-2.6.31
[root@localhost libxml2-2.6.31]# ./configure --prefix=/usr/local/libxml2
[root@localhost libxml2-2.6.31]# make
[root@localhost libxml2-2.6.31]# make install
到這里libxml2就安裝完成了,下面開始安裝PHP5.3
[root@localhost libxml2-2.6.31]# cd
[root@localhost root]# tar -xjvf php-5.3.4.tar.gz2
[root@localhost root]# cd php-5.3.4
[root@localhost php-5.3.4]# ./configure --prefix=/usr/local/php5 //安裝位置
--enable-mbstring //設(shè)置 php 支持多字節(jié)字符串
--with-apxs2=/usr/local/apache2/bin/apxs //設(shè)置 apache 服務(wù)支持 apxs位置
--width-libxml-dir=/usr/local/libxml2 //設(shè)置剛才安裝的libxml2位置
--with-mysql=/usr/mysql //設(shè)置 mysql 程序安裝位置
--with-config-file-path=/usr/local/php5 //設(shè)置 php 程序配置文件位置
[root@localhost php-5.3.4]# make
[root@localhost php-5.3.4]# make install
[root@localhost php-5.3.4]# cp php.ini-development /usr/local/php5/php.ini
在 APACHE里添加 php,使 APACHE 支持 PHP
[root@localhost php-5.3.4]# vi /usr/local/apache2/conf/httpd.conf
53 LoadModule php5_module modules/libphp5.so
54 AddType application/x-httpd-php .php //或者在下面的meta中定義(搜索AddType就可以找到)
167
168 DirectoryIndex index.php index.html
169
[root@localhost php-5.3.4]# service apache restart
創(chuàng)建index.php在網(wǎng)站默認(rèn)根目錄下,輸入網(wǎng)址訪問測(cè)試
--------------------------------------------------------------
源碼安裝時(shí)提示找不到 libxml2
yum install libxml2 libxml2-devel
----------------------------------------------------------------
php socket測(cè)試時(shí) 提示
Warning: socket_create() Unable to create socket [1]: Operation not permitted
需要root權(quán)限,可用通過在root下 /usr/local/php/bin/php ping.php 來運(yùn)行
The class is using SOCK_RAW
to create the socket. It might be you need root privilegues on your machine to execute this code. If this any issue with your enviroment, then fall back to shell_exec
--------------------------------------
Unable to load dynamic library '/usr/lib/php/modules/pgsql.so' - libpq.so.5: failed to map segment from shared object:
在使用PHP編寫web頁(yè)面訪問Postgres數(shù)據(jù)庫(kù)時(shí),遇到了apache 沒有正確加載pdo_pgsql.so的問題, 把它記錄下來以備用。
通過web訪問php頁(yè)面時(shí),頁(yè)面沒有反應(yīng), 查看http log時(shí)出現(xiàn)下面的錯(cuò)誤:
PHP Fatal error: Call to undefined function pg_connect()
但是在命令行運(yùn)行php程序訪問postgres測(cè)試是成功的, 沒有發(fā)現(xiàn)問題。
網(wǎng)上搜索,都是說php訪問postgres 安裝了php-pgsql就可以了。 但我已經(jīng)通過yum安裝了php-pgsql, 查看/etc/php.ini, /etc/php.d/pdo_pgsql.ini都是配置正確的。
[root@localhost php.d]# cat pdo_pgsql.ini
; Enable pdo_pgsql extension module
extension=pdo_pgsql.so
phpinfo()也顯示加載了pdo_pgsql.ini, pgsql.ini , 但在PDO節(jié)里沒有看到Postgres。
后來想到會(huì)不會(huì)是SElinux的問題, 把SElinux 關(guān)了,再重啟apache,
[root@localhost php.d]# setenforce 0
service httpd restart
重啟運(yùn)行phpinfo(), 就看到postgres 正確加載了。
回過來查看以前apache 的error_log, 確實(shí)是php 在加載pdo_pgsql.so 時(shí)出現(xiàn)了由于訪問權(quán)限引起的問題。
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pdo_pgsql.so' - libpq.so.5: failed to map segment from shared object: Permission denied in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pgsql.so' - libpq.so.5: failed to map segment from shared object: Permission denied in Unknown on line 0
把SElinux 關(guān)了后, 啟動(dòng)apache時(shí)就沒有這個(gè)錯(cuò)誤了,php也成功加載了pgsql。
在實(shí)際應(yīng)用中就需要關(guān)閉SElinux,或者重設(shè)libpq.so.5的權(quán)限。
-----------------------------------------------------
/usr/bin/apxs: no such file or directory
yum install httpd-devel