【问题标题】:Getting an error with PHP使用 PHP 时出现错误
【发布时间】:2014-05-30 14:06:37
【问题描述】:

当我运行以下 PHP 代码时:

<?php
$username = "root";
$password = "allen123";
$conn = new PDO('mysql:host=localhost;dbname=test', $username, $password);
?>

我收到以下错误。

致命错误:在 /Users/idrisk/Colourity/site/index.php:4 中未捕获异常 'PDOException' 并带有消息 'SQLSTATE[HY000] [2002] 否 >此类文件或目录' 堆栈跟踪:#0 >/ Users/idrisk/Colourity/site/index.php(4): PDO->__construct('mysql:host=loca...', 'root', >'allen123') #1 {main} 在 /Users/ 中抛出idrisk/Colourity/site/index.php 在第 4 行

有什么想法吗?顺便说一下,我通过 Macports 下载了 PDO 驱动程序

编辑

To use mysqlnd with a local MySQL server, edit /opt/local/etc/php55/php.ini and set     mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket to the path
to your MySQL server's socket file.

For mysql5, use /opt/local/var/run/mysql5/mysqld.sock
For mysql51, use /opt/local/var/run/mysql51/mysqld.sock
For mysql55, use /opt/local/var/run/mysql55/mysqld.sock
For mysql56, use /opt/local/var/run/mysql56/mysqld.sock
For mariadb, use /opt/local/var/run/mariadb/mysqld.sock
For percona, use /opt/local/var/run/percona/mysqld.sock

--->  Cleaning php55-mysql
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  No broken files found.

【问题讨论】:

  • 我在这里有点冒险,但我认为my.cnf 中定义的pdo_mysql.default_socket 的物理路径与服务器上mysqld.sock 的物理位置不同。跨度>
  • @Ohgodwhy: +1(但您可能是指 php.ini 代表 pdo_mysql.default_socketmy.cnf 代表 socket 不匹配;pdo_mysql.default_socket 不在 my.cnf 中)。
  • @user302975 您可能只有文件所有者的读/写权限。您需要将写入权限设置为“其他”才能写入。然而,这是非常糟糕的。使用须藤。系统文件不应该是全局可写的。
  • 另外,您可以使用任何文本编辑器打开它。例如,您可以使用 sudo open -a TextEdit php.ini 在 TextEdit 中以管理员身份对其进行编辑(与其他编辑器相当)。你不限于nano
  • 很高兴你的机器正常工作,即使我错了。正如我所说,没有太多使用 Macports 的经验。

标签: php mysql pdo


【解决方案1】:

您的 php.ini 文件中似乎有一个无效的套接字。将pdo_mysql.default_socket 设置更改为空字符串以使用默认套接字。

【讨论】:

    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 2020-09-15
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多