PHP扩展(extensions)

嘿,我们来谈谈 PHP 插件。
这个东西就像 PHP 硬件,所以它可以处理更多不同的事情。
例如,mysql 扩展可让您处理数据库,gd2 可让您处理图像,xdebug 可帮助您调试代码。
这些都是非常实用的。

记得有一次,一个朋友的项目需要使用MySQL数据库,我教他如何检查PHP是否安装了mysql插件。
我们使用 phpinfo() 函数。
一旦我们打开页面,就会出现很多信息,包括激活的扩展程序列表。
他当时颇为惊讶,觉得非常合适。

还有一次,我帮助一个团队安装了 xdebug,他们需要调试 PHP 代码。
我们使用 get_loaded_extensions() 函数来查看直接在命令行上加载的所有模块名称。
该功能简单实用,特别适合快速检查。

管理 PHP 插件其实并不复杂。
首先,你需要知道拉伸通常放在哪里。
默认位于 PHP ext 文件夹中。
有时,您需要修改 php.ini 配置文件,例如启用非活动插件。
您只需删除 php.ini 中扩展名前的分号即可。

安装新的附加组件(例如 PECL 中的附加组件)非常简单。
首先下载,解压,然后根据系统是Windows还是Linux进行操作。
对于Windows系统,您需要下载.dll文件。
对于Linux系统,可以选择直接安装或者编译。
我记得有一次我在Linux服务器上编译并安装了一个插件。
当时,我必须设置环境,然后运行 ​​phpize 和 autoconf。
虽然这个过程有点繁琐,但是一旦成功了,感觉还是挺满足的。

之前我对phpize和autoconf了解不多。
查阅资料后发现,phpize是用来简化构建PHP插件的过程,而autoconf是一个自动配置软件源代码的脚本,可以帮助你自动化一些配置工作。

总的来说,PHP插件是开发者提高效率的好帮手。
但是,管理它们时应该小心,以免意外地进行错误的配置。

修改php.ini 后如何生效

说实话,在更改 php.ini 的过程中,我经历过很多陷阱。
如果您遵循这些步骤,最初不会出现大问题。
但我还是想说几句话,免得你们像我一样,发现换了很久,还是老样子。

当您在第一步检查文件路径时,有一个小技巧。
不要只使用 whereis 或 php --ini。
上次我在CentOS上时发现有四个php.ini,最后在/etc/php/7 .3 /apache2 /php.ini中找到了正确的一个。
请记住,Apache 进程加载哪个文件取决于 httpd.conf 中的设置。
您可以使用 grep -rn "LoadModule" /etc/apache2 / 或 /etc/httpd/conf/httpd.conf 查找加载模块的路径。

第二步是更改文件权限。
这一点尤其重要。
我是直接用root改的。
导致Apache进程用户为www-data,无法直接打开配置文件。
后来用chown www-data:www-data php.ini,然后sudo chmod 6 4 4 Windows上改权限比较麻烦。
我建议以管理员身份运行记事本 php.ini,以便自动更正权限。

第三步,重启Apache。
systemctl命令在Linux系统上特别容易使用,但要注意有时apache2 和httpd的名称会改变。
我有一个使用lighttpd 的客户端,命令完全不同。
在Windows上,我习惯使用net stop apache2 start apache2 ,这比服务管理器更快。

正如在多配置文件冲突的预防措施中提到的,我遇到过的最奇怪的情况是cli和apache的php.ini共存。
例如修改apache的opcache配置后,在cli模式下默认值还是一样。
后来我发现cli使用了/etc/php/7 .3 /cli/php.ini。
建议在更改配置之前, ps aux |首先 grep php 查看哪个进程正在使用哪个配置。

验证配置是否有效。
我有一个窍门。
您不需要创建文件,只需直接在浏览器中输入 php -m 即可列出所有扩展名。
更改 ext 目录权限或重新编译扩展后,可以使用此命令查看最准确的结果。
当然,最安全的做法是创建 <?php phpinfo(); ?> 文件,但不要忘记检查加载的配置文件路径。
我见过由 ln -s 指向错误文件引起的问题。

顺便说一下缓存问题。
上次更改了xdebug的配置并重新启动了Apache,但是很长一段时间没有任何反应。
后来发现是opcache缓存的。
直接运行 sudo php -d opcache.enable=0 -m xdebug ,等待五分钟,然后用浏览器访问。
修改后记得恢复opcache,使用php -d opcache.enable=1 -m xdebug。