(PHP 5.3.29)
网站php代码是用pdo模块去访问mysql数据库
#查看php中pdo是否支持mysql php -m | grep -i pdo_mysql
#何为pdo
POD(PHP Data Object)扩展在PHP5中加入,PHP6中将默认识用PDO连接数据库,所有非PDO扩展将会在PHP6被从扩展中移除。该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题。
#下载pdo_mysql源码
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar -zxv -f PDO_MYSQL-1.0.2
cd PDO_MYSQL-1.0.2
/usr/local/bin/phpize #必须安装有 m4 autoconf
./configure --with-php-config=/usr/local/bin/php-config --with-pdo-mysql=/usr/local/mysql
make &&make install
#pdo_mysql.so移动到/usr/lib64/php/modules/
find / -name pdo_mysql.so -type f -exec mv {} /usr/lib64/php/modules/ \
#模块加入到php中
vim /usr/local/lib/php.ini
extension_dir = "/usr/lib64/php/modules/"
extension = "pdo_mysql.so"
#重启apache
apachectl -k restart
LAMP下的更新问题:系统是redhat9,自定义安装了php,mysql,apache。所以在安装最新的php,mysql,apache版本时候,本人对相关的rpm进行了卸载,忽略依赖关系强制卸载apache由于php,mysql与perl的bt依赖关系,LAMP下的更新中的问题
1.当你看到mysql有很多版本,如:
mysql-max-5.0.21-linux-i686-glibc23.tar.gz和
mysql-max-5.0.21-linux-i686.tar.gz
这俩个到底选哪个呢,请你使用如下命令来决定
# rpm -qa | grep glibc glibc-kernheaders-2.4-8.10 glibc-common-2.3.2-11.9 glibc-2.3.2-11.9 glibc-devel-2.3.2-11.9
如果出现以上信息,请选择mysql-max-5.0.21-linux-i686-glibc23.tar.gz版本
2:编译php时出现
./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
这是找不到perl解释器的缘故。
修改/usr/local/apache2/bin/apxs文件中:
/replace/with/path/to/perl/interpreter
把他替换成perl所在的路径如/opt/ActivePerl-5.8/bin/perl,
(如果你下载的是active perl5.8的rpm,他默认安装路径是/opt/ActivePerl-5.8/bin/perl)
3.安装了perl后,发现所有的文本编辑器都不能用了。
运行vi或者gedit时候,提示找不到libperl.so
到perl的安装目录下找一个libperl.so放到/usr/lib目录下就解决问题了
我的libperl.so在/opt/ActivePerl-5.8/lib/5.8.8/i686-linux-thread-multi-CORE/目录下。
如果不知道libperl.so在什么地方,可以用
# locate libperl.so
查找,或者用find命令
4.当我使用mysql-standard-5.0.20,编译php时出现mysql错误:
checking for mSQL support... no checking for MSSQL support via FreeTDS... no checking for MySQL support... yes checking for specified location of the MySQL UNIX socket... no checking for MySQL UNIX socket location... /tmp/mysql.sock checking for mysql_close in -lmysqlclient... no checking for mysql_error in -lmysqlclient... no configure: error: mysql configure failed. Please check config.log for more information
.
LAMP下的更新中的问题,安装PHP的时候没有指定一下mysql的安装目录。但是我已经指定了,所以这个说法是错误的,其实主要原因是 mysql-level没有装,也就是mysql的版本不对,应该换
mysql-max-5.0.21版本(包含所有mysql相关内容的软件包)
5.编译php时出现
configure: error: freetype2 not found!
没有安装freetype-level
configure: error: libpng.(a|so) not found.
没有安装libpng-devel
6忘了mysql的root口令怎么办
# /usr/local/mysql/support-files/mysql.server stop # cd /usr/local/mysql/bin/ # mysqld_safe --skip-grant-tables & # mysqladmin -u user password 'newpassword' # mysqladmin flush-privileges
增加pdo_mysql单独安装
原来编译php的时候,没有把dpo_mysql相关的参数带上,安装 完后才发现。再重新编译有点费时间,所以决定单独来安装。
先找需要的版本,我用的是稳定的版本。要先看看说明,特别是要注意mysql的php的版本。
wget tar xzvf PDO_MYSQL-1.0.2.tgz cd PDO_MYSQL-1.0.2 /usr/local/php/bin/phpize Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519 ./configure
执行完以后,报了个错误:
checking for mysql_config... not found configure: error: Cannot find MySQL header files under
这个错误表明系统缺省没有找到你的mysql安装目录,因此可以使用这个命令解决:
ln -s /usr/local/mysql/bin/mysql_config /usr/bin/mysql_config
这样建立了你的实际msyql安装目录和mysql_config命令的管理
经过configure就可以make了
在执行:./configure 时,又出现了一个问题:
checking for PDO includes... checking for PDO includes... configure: error: Cannot find php_pdo_driver.h.
检查的时候,不能找到php_pdo_driver.h,经过检查,发现在读php-config的时候,在读以前的配置。
解决方法:./configure –with-php-config=/usr/local/php/bin/php-config(根据实际的路径的来指定)
在执行./configure --with-php-config=/usr/local/php/bin/php-config,又出现了一个问题:
error: mysql_query missing!?
解决方法:./configure --with-php-config=/opt/php5/bin/php-config --with-pdo-mysql=/opt/mysql5
(根据自己的实际路径,设定编译安装mysql的位置).
make make install
注意pdo_mysql的全路径,我的是:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/pdo_mysql.so
然后在/usr/local/lib/php.ini
加上一句:
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/pdo_mysql.so
重新启动apache即可看到已经加载pdo_mysql成功。
LAMP下的更新中的问题有好多,这只是其中的一部分,如果大家还有什么类似的问题的话,可以贴出来,一起解决一下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)