在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的更多相关文章

  1. 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 ...

  2. 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 ...

  3. [Mac][phpMyAdmin] [2002] No such file or directory

    我从phpMyAdmin的官网下载了最新版,将它解压到 /Library/WebServer/Documents 下,然后把文件夹改名 phpmyadmin . 接着输入在浏览器中输入 localho ...

  4. TP连接数据库报错:SQLSTATE[HY000] [2002] No such file or directory

     连接数据库报错:“SQLSTATE[HY000] [2002] No such file or directory”. 出现这个问题的原因是PDO无法找到mysql.sock或者mysqld.soc ...

  5. 无法登录 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 ...

  6. [PDOException] SQLSTATE[HY000] [2002] No such file or directory

    编译安装PHP7之后,在安装mysql之后,用pdo操作数据库的时候,出现了此错误[PDOException] SQLSTATE[HY000] [2002] No such file or direc ...

  7. 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 ...

  8. Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory

    执行下面的代码报错: $pdo = new PDO('mysql:dbname=db_test;host=localhost', 'root', '123456'); PHP Fatal error: ...

  9. Mysql_connect报告”No such file or directory”错误的解决方法

    写了个php脚本单独执行mysql_connect(),发现错误信息居然是“No such file or directory"! 首先确定是mysql_connect()和mysql_pc ...

随机推荐

  1. 利用babel自动编译es6文件

    一.检查File-Watchers中Babel的Arguments,有一项presets的设置,把他更改为=es2015,详细设置如下: $FilePathRelativeToProjectRoot$ ...

  2. MVC学习二:Controller和View关系

    控制器(Controller)主要是定义方法和加载视图(View) 1.控制器中的Action方法返回值的类型ActionResult,string 2.控制器中Action方法接收浏览器参数方式: ...

  3. 【题解】洛谷P3205【HNOI2010】合唱队

    洛谷 P3205:https://www.luogu.org/problemnew/show/P3205 复习区间DPing 思路 把理想队列拆分成 第一个和后面几个 划分成求后面几个的理想队列 最后 ...

  4. py faster rcnn+ 1080Ti+cudnn5.0

    看了py-faster-rcnn上的issue,原来大家都遇到各种问题. 我要好好琢磨一下,看看到底怎么样才能更好地把GPU卡发挥出来.最近真是和GPU卡较上劲了. 上午解决了g++的问题不是. 然后 ...

  5. android ListView 与GridView 学习总结(五)

    ListView的使用总结 基本使用:   步骤:在布局文件中定义一个ListView控件-在活动中获得ListView的实例-获得适配器adapter的实例并且传入三个参数-把适配器对象传递给lis ...

  6. VSTO Project 客户端自动发送邮件

    利用office vsto功能,抓取我们选择的任务,根据配置节,邮件发送内容,最终根据任务名称,任务开始结束时间,任务资源名称,发送邮件给任务资源. 这是我的VSTO界面. 配置我们发送邮件的服务器地 ...

  7. Restframework中的Request

    1.介绍 该篇博客主要介绍restframework内置的Request类,它扩展了Django中的Request类,实现了很多方便的功能--如请求数据解析和认证等. 如: 在APIView中封装的r ...

  8. CALayer层的属性(转)

    一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint  position:  (1)用来设置CALayer在父层中的 ...

  9. view添加毛玻璃效果两种方法

    第一种方法: UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; UIVisualEffectV ...

  10. c# 获取网络流量

    public class ip_helper{enum Constants {MAX_INTERFACE_NAME_LEN=256, MAXLEN_PHYSADDR=8,MAXLEN_IFDESCR= ...