mysql_connect(): [2002] No such file or directory
在mac中搭建php的开发环境
1. apach ---- 推荐用MAMP。你只要把你的php文件/项目放入到htdocs(/Applications/MAMP/htdocs)目录下,启动mamp,输入localhost就可以直接看见你这个目录下的所有文件了。--由于这种相对简单,这里不再赘述,如果任何问题,欢迎联系交流。
2. nginx ---- 由于没有已经集成的工具,nginx相对apach的配置相对复杂。比如你需要下载mysql,下载php-fpm,甚至还需要用homebrew来安装。(我下面的说明都是基于homebrew安装的情况)在这里我简单的说明几点需要特别注意的情况:
2.1 nginx的配置
需要说明的是/usr/local/etc/nginx下的conf文件server的配置,fastcgi_param选项,注意当加上$document_root,如下面所示:实际上,下面的$document_root$fastcgi_script_name;是和fastcgi.conf里面的值一致。
server {
listen ;
server_name localhost; //指定你的域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /Users/megan/www/; // 指定你项目的路径
index index.html index.htm;
}
#error_page /.html;
# redirect server error pages to the static page /50x.html
#
error_page /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
本文是有mysql引发的,这里就简单的说说mysql的简单命令。
启动 -- mysql.server start
关闭 -- mysql.server stop
重启 -- mysql.server restart
连接 -- mysql -uroot 或者 mysql -uroot -p (这里是密码)
导入数据 -- source ../*.sql
2.3 php-fpm的配置
这玩意儿最郁闷的是我没有找到很好的重启和关闭的命令。比如nginx的启动用sudo nginx,关闭用sudo nginx -s -stop重启用sudo nginx -s reload. 可php-fpm我只会用sudo php-fpm来启动。关闭的方式简直是粗暴。
我首先用ps aux|grep php来查看有那些php进程在运行,然后执行kill php-fpm相关进程。比如下面这样的结果执行(sudo)kill 3870 3871 3872.再查看一次,你会发现这些进程没有了。(如果哪位同仁有更好的办法并能指点迷津,比女子将不胜感激)
[megan@megan:~]$ps aux|grep php
megan 4.6 7.4 ?? S :51AM :40.56 /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -os macosx -ws cocoa -arch x86 -launcher /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -name Zend Eclipse for PHP Developers --launcher.library /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS//../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx_1.1.200.v20120522-1813/eclipse_1503.so -startup /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS//../../../plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar --launcher.overrideVmargs -showlocation -launcher /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -showlocation -data /Users/megan/www -launcher /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -showlocation -keyring /Users/megan/.eclipse_keyring -showlocation -vm /System/Library/Frameworks/JavaVM.framework -vmargs -Xms128M -Xmx512M -Djava.awt.headless=true -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Xdock:icon=../Resources/Eclipse.icns -XX:MaxPermSize=256m
megan 0.4 0.0 s001 S+ :48PM :00.01 grep php
nobody 0.0 0.2 ?? S :57PM :05.74 php-fpm
nobody 0.0 0.2 ?? S :57PM :01.09 php-fpm
root 0.0 0.0 ?? Ss :57PM :00.23 php-fpm
其实这个问题很简单,只需要找到你的mysql.sock 然后回到你的php.ini修改一个配置就好了。主要是下面三行代码。
pdo_mysql.default_socket=/tmp/mysql.sock //如果使用的是zendframework,这个需要配置
// 如果使用的是opencart等并没有使用pdo的需要配置下面两项。
mysql.default_socket = /tmp/mysql.sock mysqli.default_socket =/tmp/mysql.sock
实际上只做了一件事,那就是将mysql.sock配置给default_socket。
其实这里最主要的问题是你怎么找到你的mysql.sock, 怎么找你的php.ini。玩了这么就的mac,除了做iOS开发,无论是玩java还是php还是其他,最郁闷的一件事情是找相关的配置文件。什么whereis,locate,which等都用了个遍,往往还是找不到文件,那种痛苦,不想多说。
找到php.ini最简单的办法--建一个文件,phpinfo()会让世界变得异常美好。
找到mysql.sock -- 你可能会使用mysqladmin viriables 查看mysql所有的参数,你或许发现mysql.sock的路径指向了/tmp/mysql.sock,可是你找不到那个文件,尽管你现实所有隐藏文件你还是看不到这个文件。
| Directive | Local Value | Master Value |
|---|---|---|
| pdo_mysql.default_socket | /var/mysql/mysql.sock | /var/mysql/mysql.sock |
那么你可以执行sudo find / -name mysql.sock 它会告诉你,其实你的mysql.sock在private/tmp/mysql.sock这里。那么你可能会想用下面这行代码来建一个快捷方式。
ln -s /private/tmp/mysql.sock /tmp/mysql.sock
ok,是可以,或许它会提醒你这个文件已经存在了。没关系,不用理会它,尽管你在/tmp里面还是看不见mysql.sock。你只管用就行了。我也不知掉多到哪个我看不见的角落了。总之,有个mysql.sock的快捷方式在/tmp下面给你使用。
来源:http://my.oschina.net/megan/blog/325040
mysql_connect(): [2002] No such file or directory的更多相关文章
- mac 连接mysql提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory
mac 连接mysql的时候提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory [说明1]MAC下M ...
- Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory解决方法
今天用pdo连接mysql遇到一个奇怪的问题,host设为127.0.0.1可以连接成功,设为localhost就会报如下的错误: PHP Fatal error: Uncaught excepti ...
- [Mac][phpMyAdmin] [2002] No such file or directory
我从phpMyAdmin的官网下载了最新版,将它解压到 /Library/WebServer/Documents 下,然后把文件夹改名 phpmyadmin . 接着输入在浏览器中输入 localho ...
- TP连接数据库报错:SQLSTATE[HY000] [2002] No such file or directory
连接数据库报错:“SQLSTATE[HY000] [2002] No such file or directory”. 出现这个问题的原因是PDO无法找到mysql.sock或者mysqld.soc ...
- 无法登录 MySQL 服务器 mysqli_real_connect() (HY000 2002) No such file or directory
mysqli_real_connect(): (HY000/2002): No such file or directory change localhost to 127.0.0.1 in conf ...
- [PDOException] SQLSTATE[HY000] [2002] No such file or directory
编译安装PHP7之后,在安装mysql之后,用pdo操作数据库的时候,出现了此错误[PDOException] SQLSTATE[HY000] [2002] No such file or direc ...
- laravel 报错SQLSTATE[HY000] [2002] No such file or directory
在mac中执行php artisan migrate时报错 SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from i ...
- Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory
执行下面的代码报错: $pdo = new PDO('mysql:dbname=db_test;host=localhost', 'root', '123456'); PHP Fatal error: ...
- Mysql_connect报告”No such file or directory”错误的解决方法
写了个php脚本单独执行mysql_connect(),发现错误信息居然是“No such file or directory"! 首先确定是mysql_connect()和mysql_pc ...
随机推荐
- POSIX 线程详解(经典必看)
http://www.cnblogs.com/sunminmin/p/4479952.html 总共三部分: 第一部分:POSIX 线程详解 ...
- python:常用模块二
1,hashlib模块---摘要算法 import hashlib md5 = hashlib.md5() md5.update('how to use md5 in python hashlib?' ...
- 【[USACO15FEB]审查(黄金)Censoring (Gold)】
从原来的单串匹配变成了多串匹配 好像也没什么特别不一样的地方 原来的做法是搞一个栈,之后一旦匹配到就往前弹栈 做法也一样 但是在\(AC\)自动机上暴力跳\(fail\)是要\(T\)的 我们并没有必 ...
- react中 props,state与render函数的关系
我们很明显的能够感受到,react是一门数据驱动的框架,当数据发生变化,页面就会自动发生变化,他背后的原理是怎么样子的呢 比如todolist例子里面,inputValue变了,框里面的内容就会自动变 ...
- POJ 3020 Antenna Placement 【最小边覆盖】
传送门:http://poj.org/problem?id=3020 Antenna Placement Time Limit: 1000MS Memory Limit: 65536K Total ...
- React.js 中文文档
转自http://react-china.org/t/react-js/398的jsgeeker 中文文档地址 http://reactjs.cn GitHub地址 https://github.co ...
- "应用程序无法正常启动(0xc000007b)。请单击 确定 关闭应用程序。"解决方法
完成一小项目,正常运行,测试环境有Windows XP,Win 7,Win X64及有SP的版本,也是我客户端可能用到的系统版本,Win8和Win10未测试 但在分发过程中,发现有的机器可以正常运行, ...
- 剑指offer——27. 二叉搜索树与双向链表(Java版)
题目: 剑指offer的题目有挺多都挺典型的,就像这一道.不过书中的代码写的真是ugly,有很多题目LeetCode上都有,可以去LeetCode讨论区看看,经常有一些大神分享,写的代码真是高效.简洁 ...
- Entity Framework 五
连接情景中的CRUD操作: 连接场景中的CRUD操作是一项相当简单的任务,因为默认情况下,上下文会自动跟踪实体在其生命周期中发生的更改,前提是AutoDetectChangesEnabled为true ...
- 【mysql学习-2】
part-1: USE mysql;CREATE TABLE tb_x(id INT,NAME CHAR(10));INSERT INTO tb_x VALUES(5,"a");S ...