UNIX 环境下怎么安装 PHP 拓展呢?例如很简单很普通的 php_mysql.so

2016-06-09 16:37:16 +08:00
 toono

之前在 windows 平台下做过一点点 PHP ,用的是一键部署的 PHP 环境,根本不用担心这些基本的拓展。

现在在 Mac 下用 Nginx + PHP5.6-fpm 部署,从头摸索。 PHP 网页已经能运行起来了。但是在php.ini添加上需要用到的拓展就蒙了,提示在我的 PHP 安装目录下找不到相应的拓展。但是我通过 brew 去搜索也只能找到少部分的拓展,求老司机带带路。

我在 PHP.ini 添加了这一行

extension=php_mysql.so

运行之后的错误提示

<b>Warning</b>:  PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php56/5.6.22/lib/php/extensions/debug-non-zts-20131226/php_mysql.so' - dlopen(/usr/local/Cellar/php56/5.6.22/lib/php/extensions/debug-non-zts-20131226/php_mysql.so, 9): image not found in <b>Unknown</b> on line <b>0</b><br />
3750 次点击
所在节点    PHP
18 条回复
skydiver
2016-06-09 16:41:56 +08:00
你得先安装了扩展,才能有这个文件,在 ini 里启用才有用。
skydiver
2016-06-09 16:42:32 +08:00
而且 php56 里已经废掉 mysql 扩展了,现在只有 mysqli 扩展和 pdo 扩展
b821025551b
2016-06-09 16:47:55 +08:00
1 :下载 php5.6 源码包, make&&make install 想要的插件;
2 :编辑成功的插件拷贝到一个目录;建议 /usr/local/Cellar/php56/5.6.22/lib/php/extensions/;
3 : php.ini 添加。


@skydiver mysql 扩展是 php7 开始废掉的。
tagtag
2016-06-09 16:49:02 +08:00
unix 没接触过, linux 下是通过编译 php 的时候通过参数控制扩展的,可以 google 一下 php 的 configure 参数,对于已编译完的,需要的扩展需要通过 phpize 生成 so 文件,具体请 google phpize 安装扩展,教程太多了
toono
2016-06-09 16:50:18 +08:00
@b821025551b 谢谢,不过感觉有点麻烦~总之用着先

我在查资料的时候看到 pear 这个工具,是用来管理插件的吗?
b821025551b
2016-06-09 16:58:05 +08:00
@toono
其实 mac 上 brew 已经很好用,基本插件都会有, brew options php56 ,实在搞不定再自己编译;
pear 这个工具有些老了,现在更流行 composer 。
skydiver
2016-06-09 17:02:43 +08:00
@b821025551b composer 没法管理插件吧,只能管理包
skydiver
2016-06-09 17:04:53 +08:00
skydiver
2016-06-09 17:06:53 +08:00
@toono 如果用 homebrew 的话,安装扩展也挺方便的,比如直接 brew install php56-xdebug 就可以安装 xdebug 扩展了,而且帮你把 ini 也改了,自动生效
Zzzzzzzzz
2016-06-09 17:07:55 +08:00
pear 管理 php 写的类库, 历史上没什么人用, 大部分是 php4 时期的, 官方有个 pear2.php.net 针对 php5 的, 但是依旧没什么人用。 近年社区更倾向于 composer.
pecl 管理 c 写的 php 扩展.
有些发行版把 pecl 打包进了 php-pear 的包里.
b821025551b
2016-06-09 17:41:10 +08:00
@skydiver 人家都说了, 5.5 是 deprecated ,会报 E_DEPRECATED ,但是非要用可以么?当然可以。而 7 里是正式 removed ,想用?不行。
xi4oh4o
2016-06-09 17:41:40 +08:00
mac 用 brew install php70-redis

其他平台如果有 pecl
pecl install redis 就可以

如果没有 pecl
https://pecl.php.net/package/redis 下源码
进去 phpize
./configure && make && make install
skydiver
2016-06-09 17:50:57 +08:00
@b821025551b deprecated 的意思就是废弃,就是说新项目就不要用了,旧项目尽快迁移。
cxbig
2016-06-09 18:27:32 +08:00
看上去你的 php 是用 brew 装的,那么你都不用额外在 php.ini 加配置,直接用 brew 装对应组件就好。
cxbig
2016-06-09 18:34:54 +08:00
装额外的 php module ,比方说 xdebug :
brew info homebrew/php/php56-xdebug
你都不用再写 ini 文件加载该 module ,它安装的时候自动把相关 ini 文件放在
/usr/local/etc/php/5.6/conf.g/ 目录下了
另外如果你做了:
brew link php56
可以用:
php -v 查看版本
php -m 查看 module
toono
2016-06-09 18:49:58 +08:00
@cxbig 嗯嗯,谢谢。然而一切来得太 匆匆,我不小心 rm 了我的个人目录,现在有点万念俱灰。手动哭
lotushzy
2016-06-09 21:20:56 +08:00
1 、 mac 下可以采用 MAMP 这个集成环境的
2 、 mac 下由于自带了 php 环境,但是缺少一些额外需要的扩展,如果 brew 安装能够并入默认的环境中(没尝试 homebrew 安装方式),自然是最好的。安装之后一定记得重启 php-fpm (重点)和 apache
3 、摒弃原有的 PHP 环境,采用 macports 安装,目前本人 mac 就采用这种方式,已经可以成功使用
kslr
2016-06-10 03:43:04 +08:00
在源码包里面编译插件是最快也是最合适的办法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/284637

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX