Home  >  Article  >  Backend Development  >  本人已接近奔溃,求各位解答下mamp环境下连接数据库和系统设置的几个问题,不甚感激!

本人已接近奔溃,求各位解答下mamp环境下连接数据库和系统设置的几个问题,不甚感激!

WBOY
WBOYOriginal
2016-06-20 12:46:121044browse

概况:最近学习PHP编程,系统为MAC OS X 10.11 ,使用mamp PRO(3.1)集成环境

问题:在mamp下的文件夹htdocs中放入简单的echo php代码可以显示,但无法连接数据库,具体如下,
比如按照mamp主页的提示输入数据库连接的测试代码:

$user = 'root';$password = 'root';$db = 'inventory';$host = 'localhost';$port = 8889;$link = mysqli_init();$success = mysqli_real_connect(   $link,    $host,    $user,    $password,    $db,   $port);

http://localhost:8888/  网页显示一片空白,无任何提示。

再测试如下代码
    $host='localhost';    $user='root';    $password=‘root’;     $database=‘mysql’;    $port=8889;    $socket=':/Applications/MAMP/tmp/mysql/mysql.sock';    $dbc = mysqli_connect($host, $user, $password, $database,$port,$socket) or die(mysqli_connect_error());

网页显示:No such file or directory


再测试如下代码:
<?php $link=mysql_connect("localhost","root", "root"); if(!$link) {echo "ok";}else {echo "false"; }?>

zend里显示Warning: mysql_connect(): No such file or directory in /Applications/MAMP/htdocs/tags.php on line 2
ok
但是localhost里显示false,这个到底算什么?

我被这个问题困惑2天了,切换系统的root用户也试过,一样没反应。

初次之外我尝试在终端里运行mysql -uroot -p
显示-bash: mysql: command not found
尝试关闭mamp启动系统自带的mysql也是一样显示-bash
按照网上查询的http://zhidao.baidu.com/link?url=0FkWDsFNtdWu3WwZVjpgY0l-DfpWZKADiEg7gwIA9oJwYoR5EYbvBWfnAPdKpBASgsgxRFYTsTmJgUCyMj0Ipk-I5SQkmg66ugqSHrl2c43  尝试了修改密码 虽然修改成功但无论改几次一直显示密码不正。

MAC自带的mysql会不会和mamp的mysql冲突?

我已经尽可能的尝试去解决了,但能力有限只能请教各位了,真的很想用PHP做点东西出来,无奈卡在这里烦请各位予以帮助,100分献上,谢谢!


回复讨论(解决方案)

打开错误日志,查看错误
查看php是否安装了mysql扩展
查看mysql是否启动,和监听端口号。

MAC没用过,建议安装一个虚拟机,安装windows系统,下载使用wamp环境,。

你的两段代码,一段是mysqli_connect ,另一段是mysql_connect
你究竟用的是哪个?用这两个都需要安装php-mysql php-mysqli扩展的。

<?phpphpinfo();?>


看看输出的内容中有没有mysql 与mysqli 扩展,如果没有表示安装不成功了。需要重新安装这两个扩展。

再尝试了很多办法  总结应该是PHP连接MySQL报错"No such file or directory"的问题
百度之:http://www.linuxidc.com/Linux/2012-12/76150.htm  这个应该是最有可能的解决办法
但是,用mamp自带的phpinfo页面能找到mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket
然而finder里却看不到文件,先不管了。。。
第3条 3,启动mysql(见说明2),执行命令 STATUS; 记下UNIX socket的值   
这个STATUS命令怎么打?不明白  求解!

http://ju.outofmemory.cn/entry/144933  里面说的
“解决方法,也无敌简单,就是给沙盒里地PHP二进制,做一个软链,放到/usr/local/bin下面,比如命名为php55,以后再执行需要连接数据库的脚本的时候,记得使用php55作为解释器来运行,就会顺畅。”

这个具体怎么做 同样求解!

做软链的方法试了 貌似没用 又要崩溃了
终端输入 In -s /Applications/MAMP/tmp/mysql /usr/local/bin
显示:-bash: In: command not found
我去。。。。

 不懂mac 不过command not found这玩意倒是有点眼熟 貌似是系统环境变量的问题

估计楼主的mac有两个php版本,按装了扩展的是php56,另一个是php55
看看
php -v
/usr/local/bin/php -v

看看是否一样,如果不是一样,就是这个问题了。

只需要把/usr/local/bin/php 软连接到 按装的php路径就可以了。

先开启错误信息:

ini_set('display_errors','on');error_reporting(E_ALL);

看看有什么错误提示

最后发现是PHP里的数据库的端口号错了,修改后就好了,谢谢各位!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn