【发布时间】: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_socket与my.cnf代表socket不匹配;pdo_mysql.default_socket不在my.cnf中)。 -
@user302975 您可能只有文件所有者的读/写权限。您需要将写入权限设置为“其他”才能写入。然而,这是非常糟糕的。使用须藤。系统文件不应该是全局可写的。
-
另外,您可以使用任何文本编辑器打开它。例如,您可以使用
sudo open -a TextEdit php.ini在 TextEdit 中以管理员身份对其进行编辑(与其他编辑器相当)。你不限于nano。 -
很高兴你的机器正常工作,即使我错了。正如我所说,没有太多使用 Macports 的经验。