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 //设置 php 支持多字节字符串
--with-apxs2=/usr/local/apache2/bin/apxs //设置 apache 服务支持 apxs位置
--width-libxml-dir=/usr/local/libxml2 //设置刚才安装的libxml2位置
--with-mysql=/usr/mysql //设置 mysql 程序安装位置
--with-config-file-path=/usr/local/php5 //设置 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
创建index.php在网站默认根目录下,输入网址访问测试
--------------------------------------------------------------
源码安装时提示找不到 libxml2
yum install libxml2 libxml2-devel
----------------------------------------------------------------
php socket测试时 提示
Warning: socket_create() Unable to create socket [1]: Operation not permitted
需要root权限,可用通过在root下 /usr/local/php/bin/php ping.php 来运行
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页面访问Postgres数据库时,遇到了apache 没有正确加载pdo_pgsql.so的问题, 把它记录下来以备用。
通过web访问php页面时,页面没有反应, 查看http log时出现下面的错误:
PHP Fatal error: Call to undefined function pg_connect()
但是在命令行运行php程序访问postgres测试是成功的, 没有发现问题。
网上搜索,都是说php访问postgres 安装了php-pgsql就可以了。 但我已经通过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节里没有看到Postgres。
后来想到会不会是SElinux的问题, 把SElinux 关了,再重启apache,
[root@localhost php.d]# setenforce 0
service httpd restart
重启运行phpinfo(), 就看到postgres 正确加载了。
回过来查看以前apache 的error_log, 确实是php 在加载pdo_pgsql.so 时出现了由于访问权限引起的问题。
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 关了后, 启动apache时就没有这个错误了,php也成功加载了pgsql。
在实际应用中就需要关闭SElinux,或者重设libpq.so.5的权限。
-----------------------------------------------------
/usr/bin/apxs: no such file or directory
yum install httpd-devel