Nr *_* 28 240 php mysql database
我正在尝试使用Apple上的终端(使用PHP)连接到我的MySQL数据库.
昨天它工作正常,现在我突然得到标题中的错误.
当我使用浏览器运行它时(我安装了XAMPP),脚本可以工作,但终端拒绝连接到数据库.
这是我包含连接的文件(当我不包含此脚本时脚本工作,但它不连接到DB):
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("FNB1C_data") or die(mysql_error());
?>
Run Code Online (Sandbox Code Playgroud)
这应该工作,因为它适用于我的浏览器.
我在终端使用的命令是php scriptname.php.
Bri*_*owe 413
出于某种原因,OS X上的mysql获取所需套接字文件的位置有点不对,但幸运的是,解决方案就像设置符号链接一样简单.
您可能有一个套接字(显示为零长度文件)/tmp/mysql.sock或者/var/mysql/mysql.sock,但是一个或多个应用程序正在查找其他位置.找出这个命令:
ls -l /tmp/mysql.sock /var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)
而不是移动套接字,编辑配置文件,并且必须记住将编辑后的文件保持在本地并远离路径正确的服务器,只需创建符号链接,以便Mac找到所需的套接字,即使它在错误的位置查找!
如果你有,/tmp/mysql.sock但没有/var/mysql/mysql.sock...
cd /var
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
sudo ln -s /tmp/mysql.sock mysql.sock
Run Code Online (Sandbox Code Playgroud)
如果你有,/var/mysql/mysql.sock但没有/tmp/mysql.sock...
cd /tmp
ln -s /var/mysql/mysql.sock mysql.sock
Run Code Online (Sandbox Code Playgroud)
您将需要创建目录和链接的权限,因此如果需要,只需在上面添加sudo命令.
lui*_*eis 360
我也有这个错误,但只能通过这里的建议修复它.
总结一下,使用:
127.0.0.1
Run Code Online (Sandbox Code Playgroud)
代替:
localhost
Run Code Online (Sandbox Code Playgroud)
原因是"localhost"是MySQL驱动程序的特殊名称,它使用UNIX套接字连接到MySQL而不是TCP套接字.
小智 24
我遇到了同样的问题,这就是我修复它的方法:
我有这个,它没有用:
$con = mysql_connect('localhost', 'root', '1234');
Run Code Online (Sandbox Code Playgroud)
我这样做了,它有效:
$con = mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', '1234');
Run Code Online (Sandbox Code Playgroud)
我没有使用mysql服务器,而是直接连接到Unix Socket.为我工作.
nou*_*oun 21
MySQL套接字通常位于/tmp/mysql.sock或中/var/mysql/mysql.sock,但可能PHP看起来错误的地方.
检查插座的位置:
sudo /usr/libexec/locate.updatedb
Run Code Online (Sandbox Code Playgroud)当updatedb终止时:
locate mysql.sock
Run Code Online (Sandbox Code Playgroud)然后找到你的php.ini:
php -i | grep php.ini
Run Code Online (Sandbox Code Playgroud)
这将输出如下内容:
Configuration File (php.ini) Path => /opt/local/etc/php54
Loaded Configuration File => /opt/local/etc/php54/php.ini
Run Code Online (Sandbox Code Playgroud)编辑你的php.ini
sudo vim /opt/local/etc/php54/php.ini
Run Code Online (Sandbox Code Playgroud)改变线条:
pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket=/tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
Run Code Online (Sandbox Code Playgroud)
其中/tmp/mysql.sock是套接字的路径.
保存修改并退出ESC + SHIFT:x
重启Apache
sudo apachectl stop
sudo apachectl start
Run Code Online (Sandbox Code Playgroud)小智 11
我在Mac OS X上使用XAMPP,而上面的Brian Lowe的解决方案稍作修改.
mysql.sock文件实际上位于"/ Applications/xampp/xamppfiles/var/mysql /"文件夹中.所以不得不在/ tmp和/ var/mysql中将它链接起来.我没有检查PHP命令行使用哪一个,但是这样做了修复,所以我很高兴:-)
sudo su
ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /tmp/mysql.sock
mkdir /var/mysql
ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)
Jso*_*ras 10
Mac OS X EL Capitan + MAMP Pro执行此操作
cd /var
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock
Run Code Online (Sandbox Code Playgroud)
然后这样做
cd /tmp
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock
Run Code Online (Sandbox Code Playgroud)
希望这能为您节省一些时间.
当您遇到以下问题时:
PHP抛出错误"警告:mysql_connect()http://function.mysql-connect:2002没有这样的文件或目录(尝试通过unix:///tmp/mysql.sock连接)"
在你的/etc/php.inito中设置"mysql.default_socket"值
"mysql.default_socket = /var/mysql/mysql.sock".
Run Code Online (Sandbox Code Playgroud)
然后在服务器管理员中重启Web服务
原因是php无法找到正确的路径mysql.sock.
请确保您的mysql首先运行.
然后,请确认该路径的mysql.sock位置,例如/tmp/mysql.sock
然后将此路径字符串添加到php.ini:
最后,重启Apache.
| 归档时间: |
|
| 查看次数: |
240247 次 |
| 最近记录: |