2012年9月29日星期六

Error: 2002 - No such file or directory

MySQL 5.1.4 ,PHP 5.3
[php]
$conn = mysql_connect('localhost', 'USER', 'PASSWORD');
if(!$conn) {
echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
}
[/php]

执行脚本得到错误:
[bash gutter="fasle"]
Error: 2002 - No such file or directory
[/bash]

打开 PHP 配置文件 php.ini,找到 mysql.default_socket
[bash]
mysql.default_socket=/path/to/mysql.sock
[/bash]

保存,重启 PHP 服务。

ERROR 1006 (HY000): Can't create database 'example' (errno: 28)

MySQL 5.1.4 ,系统 Linux 2.6.27


  • 检查 datadirtmpdir目录,用户mysql是否有写权限。

  • 检查 datadirtmpdir目录,空间是否已满。

ERROR 2003 (HY000): Can’t connect to MySQL server on (10061)

MySQL 5.1.4 ,系统 Linux 2.6.27,phpMyAdmin 3

因为是测试机器,源码安装 MySQL 后,图简便,直接复制之前的一 MySQL 配置文件。启动服务, phpMyAdmin 始终无法连接,收到错误
[bash gutter="false"]
ERROR 2003 (HY000): Can’t connect to MySQL server on (10061)
[/bash]
担心是因为 Cookie 问题,用不同主机的 MySQL Client 测试连接,收到同样的错误,检查权限设置,无问题。再看 MySQL 的配置文件,看到了坑爹的
[sql gutter="false"]
[mysqld]
skip-networking
[/sql]
skip-networking 启用后,MySQL 服务器关闭MySQL的TCP/IP连接方式,只提供采用 socket 方式的连接。配置文件原来是单机运行的 MySQL 配置。

Backgrounds:
[sql]
[mysqld]
skip-networking
bind-address = 127.0.0.1
[/sql]
与此相关的设置,还有 bind-address,设定该值后,MySQL Server 只接受来自该指定 IP 的连接。

问题已不是第一次遇见, 但是在检查权限,服务等等一番折腾后,才想起服务器中的配置是不是有限制。总认为,只要问题有见过,即使不是全部能记起,至少也应该会有印象。如此,还真是一讽刺。

2012年9月26日星期三

/usr/bin/env: php: No such file or directory

[php title="test-command.php"]
/usr/bin/env php
<?php
echo phpinfo();
?>
[/php]

[bash]
[root@www www]# ln -fs /usr/bin/test-command /tmp/test-command.php
[/bash]


[php title="test.php"]
<?php
exec('test-command');
?>
[/php]

在浏览器中访问 test.php,收到错误提示:
[bash]
/usr/bin/env: php: No such file or directory
[/bash]

这种情况下,除了要将 PHP 的执行目录(/usr/local/php/bin) 加入环境变量 $PATH,还需:
[bash]
[root@www www]# ln -fs /usr/bin/php /usr/local/php/bin/php
[/bash]

因为从安全考虑,不管对环境变量 $PATH 做什么设置,从浏览器访问时 $PATH 值都是 /usr/bin;/usr/local/bin