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就安裝完成了,下面開(kāi)始安裝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)址訪問(wèn)測(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)限,可用通過(guò)在root下 /usr/local/php/bin/php ping.php 來(lái)運(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編寫(xiě)web頁(yè)面訪問(wèn)Postgres數(shù)據(jù)庫(kù)時(shí),遇到了apache 沒(méi)有正確加載pdo_pgsql.so的問(wèn)題, 把它記錄下來(lái)以備用。
通過(guò)web訪問(wèn)php頁(yè)面時(shí),頁(yè)面沒(méi)有反應(yīng), 查看http log時(shí)出現(xiàn)下面的錯(cuò)誤:
PHP Fatal error: Call to undefined function pg_connect()
但是在命令行運(yùn)行php程序訪問(wèn)postgres測(cè)試是成功的, 沒(méi)有發(fā)現(xiàn)問(wèn)題。
網(wǎng)上搜索,都是說(shuō)php訪問(wèn)postgres 安裝了php-pgsql就可以了。 但我已經(jīng)通過(guò)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é)里沒(méi)有看到Postgres。
后來(lái)想到會(huì)不會(huì)是SElinux的問(wèn)題, 把SElinux 關(guān)了,再重啟apache,
[root@localhost php.d]# setenforce 0
service httpd restart
重啟運(yùn)行phpinfo(), 就看到postgres 正確加載了。
回過(guò)來(lái)查看以前apache 的error_log, 確實(shí)是php 在加載pdo_pgsql.so 時(shí)出現(xiàn)了由于訪問(wèn)權(quán)限引起的問(wè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í)就沒(méi)有這個(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