开发者

mysql_connect timing out

I am trying to set up a PHP framework on my Mac 10.6 computer, and it keeps erroring during setup due to database connectivity issues. So I put together a small php script to see if I could connect 开发者_StackOverflowto the server myself, and it couldn't either. The operation times out.

However, I am able to login to mysql from commandline perfectly fine. It's only PHP that is having these connection issues. Does anyone have any ideas?

Here is the script.

<?php
  $connection = mysql_connect("http://localhost", "root", "");
if( $connection ) {
  mysql_close( $connection );
  die('TRUE');
}else {
  die('Could not connect: ' . mysql_error());
}

?>

EDIT: I tried removing http:// but then I get a "No such file error."

PHP Warning:  mysql_connect(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/newuser/Downloads/t.php on line 2
PHP Warning:  mysql_connect(): No such file or directory in /Users/newuser/Downloads/t.php on line 2
Could not connect: No such file or directory


You are using this :

mysql_connect("http://localhost", "root", "");

But your MySQL host is not http://localhost : it's probably localhost.


Try to remove that http://, using this :

mysql_connect("localhost", "root", "");


As a sidenote : working with the root account is not a good practice -- even on a development platform.


EDIT after the comment : In that case, try with 127.0.0.1 (the IP address of localhost)


And if you really want to use Unix sockets, you'll have to find which socket is used by your MySQL server (it should be indicated in its configuration) ; for instance, in my /etc/mysql/my.cnf, I have :

[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock

Then, you'll want PHP to use the same one :

  • see the mysql.default_socket directive, about that,
  • or pass it to mysql_connect() as a string such as ':/path/to/socket'


Take the "http://" out of the mysql_connect parameter. It wants a host, not an HTTP URL.


Use "127.0.0.1" it will force using TCP4 insted of sockets.

If you want to use sockets, according to this document the default socket on Mac OS X is:

/tmp/mysql.sock

Fot this to be default you should edit your php confiuration or have an .htaccess file with:

php_value mysql.default_socket "/tmp/mysql.sock"


Remove http:// and use host name localhost only.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜