当前我的情况是安装上mysql配置了my.cnf中的socket,并且在指定位置也生成了 mysql.sock 的sock文件,此时我通过php.ini来设置php连接mysql.sock的文件,但是不管怎么修改,从php.info中看到对应的mysql.sock的文件路径都是同一个位置,我设置的属性也不生效。

vim /etc/php.ini

mysql.default_socket = /data/svr/mysql/mysql_3306/tmp/mysql.sock

pdo_mysql.default_socket= /data/svr/mysql/mysql_3306/tmp/mysql.sock

mysqli.default_socket = /data/svr/mysql/mysql_3306/tmp/mysql.sock

  

nm,怎么还是连接这里

nm,有完没完了

这个也添乱!!

Google了数篇文章,通过自己的消化理解,大致上了解了错误的原因:当初编译安装MySQL和PHP的时候,没有通过编译参数去指定MySQL的Socket路径,于是程序就把其Socket路径的默认值/bar/mysql.sock给编译进去了。之后实际运行的时候,通过配置文件更改了Socket路径到/foo/mysql.sock,因为所有配置文件的所有相关小节我都设置成一致的新路径,所以MySQL自己的命令行客户端、PHP的mysql扩展、PHP的mysqli扩展均能正常工作,都按照指定的新的路径去连接Socket。但是偏偏PDO抽风,根本不理会设置值,只是一门心思的按照编译中指定的值去连接,所以导致出错(猜测或者不是因为PDO执着,而是PHP本身的关系,因为我pdo_mysql是编译进PHP主程序的,而不是通过so扩展。phpinfo中的MYSQL_SOCKET值应该就是编译的默认值)。

据我消化理解来的知识,似乎此问题没有办法通过配置文件解决,MYSQL_SOCKET根本无从修改,估计是编译定死了,变成PHP或者PDO的一个静态常量了。唯一的解决途径就是重新编译PDO(如果它是so扩展)或者重新编译整个PHP(就是我这种,PDO是被编译进PHP的情况)。

于是,我的解决办法是,妥协!我把所有设置从/foo/mysql.sock改回成编译默认值的/bar/mysql.sock,PDO终于不报错了,可以正常连接了。


以下是我的问题所在

'./configure' '--prefix=/opt/svr/php5.3.10'  \
'--with-config-file-path=/opt/svr/php5.2.1/etc' \
'--with-mysql=/data/svr/mysql/mysql_3306' \
'--with-mysqli=/data/svr/mysql/mysql_3306/bin/mysql_config' \
'--with-pdo-mysql=/data/svr/mysql/mysql_3306' \
'--with-zlib' '--enable-xml' \
'--disable-rpath' \
'--enable-bcmath' \
'--enable-shmop' \
'--enable-sysvsem' \
'--with-curl' \
'--enable-fpm' \
'--with-mcrypt' \
'--with-gd' \
'--with-openssl-dir=/usr/lib64/openssl/' \
'--with-mhash' \
'--enable-socket' \
'--with-ldap' \
'--with-ldap-sasl' \
'--with-xmlrpc' \
'--enable-zip' \
'--enable-soap' \
'--enable-pdo' \
'--with-pdo-mysql=/usr' \
'--with-jpeg-dir=/usr/lib' \
'--with-png-dir=/usr/lib' \
'--with-iconv=/usr/local/include/' \
'--enable-fastcgi' 命名我的mysql是安装在 /data/svr/mysql/mysql_3306', 最后我却把 --with-pdo-mysql配置在了/usr 下。所以最后你就算跳过编译错误这段,继续make make install 并且成功了,php在使用pdo_mysql
的时候肯定会去/usr/这个路径下找mysql ,所以就找不到了

php 连接mysql的问题的更多相关文章

  1. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  2. 【初学python】使用python连接mysql数据查询结果并显示

    因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...

  3. Node.js Express连接mysql完整的登陆注册系统(windows)

    windows学习环境: node 版本: v0.10.35 express版本:4.10.0 mysql版本:5.6.21-log 第一部分:安装node .Express(win8系统 需要&qu ...

  4. PDO连接mysql数据库

    1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...

  5. 使用ABP EntityFramework连接MySQL数据库

    ASP.NET Boilerplate(简称ABP)是在.Net平台下一个很流行的DDD框架,该框架已经为我们提供了大量的函数,非常方便与搭建企业应用. 关于这个框架的介绍我就不多说,有兴趣的可以参见 ...

  6. jmeter之连接mysql和SQL Server配置

    下载jdbc驱动 在使用jmeter做性能或自动化测试的时候,往往需要直接对数据库施加压力,或者某些参数只能从数据库获取,这时候就必须使用jmeter连接数据库. 1.下载对应的驱动包 mysql驱动 ...

  7. Windows操作系统下远程连接MySQL数据库

    用Eclipse做一个后台项目,但是数据库不想放在本地电脑,于是买了一个腾讯云服务器(学生有优惠,挺便宜的),装上MySQL数据库,但是测试连接的时候,发现总是连接不是上,但是本地数据库可以连接,于是 ...

  8. Hibernate连接mysql数据库的配置

    <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

  9. C# 3种方法连接MySql

    转   http://wenku.baidu.com/view/d0cf34708e9951e79b8927c7.html C# 连接MYSQL数据库的方法及示例 连接MYSQL数据库的方法及示例 方 ...

  10. cmd连接mysql的方法详解(转载)

    连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样)断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@登 ...

随机推荐

  1. datatables条件判断列显示还是隐藏

    定义一个状态变量status根据条件取值true或者false,然后在datatables参数设置中相应的columns属性的data后面加上"visible":status,该列 ...

  2. tomcat启动startup.bat一闪而过 转

    遇到很多次运行startup.bat后,一个窗口一闪而过的问题,但是从来没去纠正怎样修改配置才是正确的,现在从网上查阅的资料整理如下:tomcat在启动时,会读取环境变量的信息,需要一个CATALIN ...

  3. shell if

    shell中if做比较 比较两个字符串是否相等的办法是: if [ "$test"x = "test"x ]; then 这里的关键有几点: 1 使用单个等号 ...

  4. 对Discuz的简单认识

    Discuz是php的一个开源论坛系统,是由康盛创想公司2004开发,从Discuz! 1.0到 现在的Discuz X3,无论从功能上还是从用户体验上,都达到了一个质的飞越.主要包括论坛.门户.群组 ...

  5. [BIM]BIM中IFD介绍

    第三大支柱IFD - 确定交换的信息和你要的信息是同一个东西 IFD的全称是International Framework for Dictionaries,中文可以叫“国际字典框架”,和前两者IFC ...

  6. linux修改mac地址

    先禁用网卡ifconfig eth0 down 再用ifconfig eth0 hw ether 新地址 这样就可以了 要想永久修改的话,在/etc/rc.d/rc.local里加上下面三句(/etc ...

  7. 理解 Android Build 系统

    在配置了以上的文件之后,便可以编译出我们新添加的设备的系统镜像了. 首先,调用“source build/envsetup.sh”该命令的输出中会看到 Build 系统已经引入了刚刚添加的 vendo ...

  8. 在javaEE下学习web(在eclipse中开发动态的WEB工程,servlet的环境搭建,及servlet的一些方法)

    一个简便的方法实现javaee版的eclipse开发动态的WEB工程(javaWEB项目)1.把开发选项切换到javaEE2. 可以在window->shou view 中找到package e ...

  9. ds.Merge 与 ds.Tables[0].Merge 的用法

    DataSet ds = new DataSet(); SqlConnection conn = new SqlConnection(ConnectionStr);            SqlCom ...

  10. JAVA基础知识之IO——对象序列化

    对象序列化 Java对象序列化(Serialize)是指将Java对象写入IO流,反序列化(Deserilize)则是从IO流中恢复该Java对象. 对象序列化将程序运行时内存中的对象以字节码的方式保 ...