简介
在博客 PHP 开发准备 介绍了安装并部署 PHP 程序到 Nginx.
今天分享在安装中遇到的问题和其他工具的安装, 以及常用的操作, 包括 MySQL, Nginx 等.
pecl 安装
PEAR 是 PHP 扩展与应用库(PHP Extension and Application Repository) 的缩写。它是一个 PHP 扩展及应用的一个代码仓库,简单地说,PEAR 就是 PHP 的 CPAN.
PECL (PHP Extension Community Library),PHP 的扩展库,它提供了一系列已知的扩展库,由 C++ 等其他语言编写而成,以 .so 形式出现,.so 为共享库, 是 shared object, 用于动态连接的, 和 dll 差不多,为比 PEAR 更快,但是与 PEAR 不同的是,PECL 需要在服务器上配置并被注册到主机中.
最直接的表述: PEAR 是 PHP 的上层扩展,PECL 是 PHP 的底层扩展.
下面说如何安装 pecl 和 pear.
1.下载 pear
1 | curl -O http://pear.php.net/go-pear.phar |
2.安装 pear
1 | sudo php -d detect_unicode=0 go-pear.phar |
3.执行以上命令后会进行安装过程,会有一些配置选项
输入1,回车,配置 pear 路径为:/usr/local/pear
输入4,回车,配置命令路径为:/usr/local/bin
4.回车两次,其他让其默认,安装完成.
5.可以通过命令检查 pear 是否安装成功
1 | pear version |
或者执行:
1 | pecl version |
可以看到类似信息:
1 | PEAR Version: 1.10.1 |
常用操作
MySQL 操作
基本操作:
1 | mysql.server start #启动 |
1.运行 php-fpm
1 | sudo php-fpm -D |
2.关闭 php-fpm
1 | sudo killall php-fpm |
3.查看 php-fpm 运行状态
1 | sudo lsof -Pni4 | grep LISTEN | grep php |
可以看到 (fpm 默认在 9000 端口)
1 | php-fpm 84200 root 8u IPv4 0x91959c43a1ea5abd 0t0 TCP 127.0.0.1:9000 (LISTEN) |
4.php-fpm 开机启动
1 | ln -sfv /usr/local/opt/php56/*.plist ~/Library/LaunchAgents |
Nginx
1.测试配置是否有语法错误
1 | nginx -t |
2.启动 nginx
1 | sudo nginx |
3.重新加载配置|重启|停止|退出 nginx
1 | nginx -s reload|reopen|stop|quit |
4.开机启动:
1 | ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents |
5.nginx 监听 80 端口:
1 | sudo chown root:wheel /usr/local/Cellar/nginx/1.6.0_1/bin/nginx |
常用目录
因为使用了 Homebrew 安装的 PHP, 配置文件的目录不是常规的 /etc
这里有几个目录需要知道, 如下:
1 | /private/etc |
遇到问题
1.执行 sudo php-fpm -D 报 php56-intl/intl.so 加载问题
warning 的内容大致如下:
1 | NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/opt/php56-intl/intl.so' - dlopen(/usr/local/opt/php56-intl/intl.so, 9): image not found in Unknown on line 0 |
解决方案: 执行下面的命令, 即可解决.方案来源 Github.
1 | brew reinstall --build-from-source php56-intl |
2.执行 sudo php-fpm -D 报 PHP Startup: mcrypt: Unable to initialize module
1 | 31-Dec-2016 22:56:51] NOTICE: PHP message: PHP Warning: PHP Startup: mcrypt: Unable to initialize module |
解决方案:
1 | brew reinstall --build-from-source php56-intl |
3.连接 mysql
使用 mysql -u root -p
连接 mysql, 提示 Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock 错误.
解决方案: 启动 mysql
1 | mysql.server start |
重新连接即可.