pdo_mysql扩展不支持php7_php7安装 pdo_mysql 扩展-Go语言中文社区

在Linux服务器上部署PHP7+Nginx时,遇到TP5项目因缺少PDO驱动导致'could not find driver'错误。本文详细介绍了如何安装pdo_mysql扩展:通过phpize配置、编译、安装,并修改php.ini,最后重启PHP和Nginx使改动生效,成功解决连接数据库的问题。
摘要由CSDN通过智能技术生成

tp5的项目,在本地能跑,在服务器(linux+php7+nginx)上时打开就提示

could not find driver

错误显示为PDO没找到这个,tp5是用PDO连接数据库的,连接不上,那就安装呗

第一步:

在php的解压出来安装包里,一般进入到/usr/local/src/etc/pdo_mysql里。假设你的php是安装在/usr/local/php里的。执行/usr/local/php/bin/phpize

41ee3b90cb77c9cd1a52c2684ff45cb6.png

如果出现图上的红框,安装两个东西

b865efc7fb6b15690b0304ad36f57eab.png

f499fbd6607603a6e480f543111785f4.png

安装完成后应该OK了

继续执行./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql/ 第二个为mysql安装路径

d2dcce1018a1f3b4c7cb415c8e6c91be.png

执行完成,make编译一下,没问题继续make install

f9a334495f76c60d05a8c9644b63acbc.png

完成,会生成一个文件夹,里面有pdo_mysql.so这就是我们要的东西。

打印phpinfo()看一下extension_dir路径,有没有指向上面的路径

78328a540b851922630122352693e118.png

如果没有,打开php.ini修改,php.ini路径在这个页面上面

a140fe9987f13d780a6b92ae40dceac4.png

b0b8371c36a2c46db7591f426dba996f.png

这里应该不用写绝对路径,但我还是谢了,确保这个路径下有pdo_mysql.so

忘了上面安装完可以运行看下/usr/local/php/bin/php -m有没有安装成功

52e53ee58caf166c9a80801fdacfe3a8.png

Nice,之前我一安装到这里一直重启nginx好几次,还是没开启,原来php也要重启

关闭PHP

killall php-fpm

php重启

/usr/local/php/sbin/php-fpm &

关闭nginx

/usr/local/nginx/sbin/nginx -s stop //关闭服务器

开启nginx

/usr/local/nginx/sbin/nginx 开启服务器

重启nginx

/usr/local/nginx/sbin/nginx -s reload

24031fe4295cc5b221c888bf9aa10a01.png

OK,开启了,tp5也能正常访问了

如果src目录里面没有php安装包

直接下载pdo_mysql拓展源码包。下载页面在这里:http://pecl.php.net/package/PDO_MYSQL,可以先下载了然后用FTP传到服务器。

我是在复制了下载地址以后使用wget直接下载到服务器端的。

在/usr/local/src目录执行

wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

然后解压

tar -zxvf PDO_MYSQL-1.0.2.tgz

进入解压后的目录,然后执行phpize,后面方法同上

这里放上一个测试pdo与的mysqli的demo

$pdo_startTime = microtime(true);

for($i=1;$i<=100;$i++){

$pdo = new PDO("mysql:host=locahost;dbname=xf","root","root");

}

$pdo_endTime = microtime(true);

$pdo_time = $pdo_endTime - $pdo_startTime;

echo $pdo_time;

echo "


";

//通过mysql链接数据库

$mysqli_startTime = microtime(true);

for($i=1;$i<=100;$i++){

mysqli_connect("host","username","123","xf");

}

$mysqli_endTime = microtime(true);

$mysqli_time = $mysqli_endTime - $mysqli_startTime;

echo $mysqli_time;

echo "


";

if($pdo_time > $mysqli_time){

echo "pdo的连接时间是mysqli的".round($pdo_time/$mysqli_time)."倍";

}else{

echo "mysqli的连接时间是pdo的".round($mysqli_time/$pdo_time)."倍";

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值