我更喜欢在shell中运行php脚本,因为输出是直接输出的,而不是像浏览器那样的分段。这对于看到脚本实际上仍在工作以及查看长脚本的哪个部分花费最长时间非常有用。
当我像这样从shell调用php脚本时
php filename.php
它工作正常,但只要脚本中没有建立数据库连接就可以了。
显然,mysql_connect()似乎失败了:
Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock)
我该如何解决这个问题?
谢谢!
查尔斯
编辑1
我按如下方式连接数据库:
//Connect to db
$user="root";
$databasePassword="";
$host="localhost";
$database="database1";
$identifier=mysql_connect($host,$user,$databasePassword,true);
$db1=mysql_select_db($database);
解决方案
This向我展示了正确的方法 - 它就像将“localhost”替换为“127.0.0.1”一样简单,因为:“原因是”localhost“是mysql驱动程序的特殊名称使用unix套接字连接到mysql而不是tcp套接字。“
答案 0 :(得分:1)
显示你的mysql_connect()语句,如果守护进程侦听此端口,你应该尝试连接到localhost:3306。
参见:php.net/mysql_connect
如果通过浏览器调用相同的脚本,显然命令行环境的ini文件不同。 ini_get(" mysql.default_host")显示如果未指定要连接的主机,将使用的设置。