![安装 php 扩展时缺少 ini 文件 ubuntu 16 php 7](https://linux22.com/image/888492/%E5%AE%89%E8%A3%85%20php%20%E6%89%A9%E5%B1%95%E6%97%B6%E7%BC%BA%E5%B0%91%20ini%20%E6%96%87%E4%BB%B6%20ubuntu%2016%20php%207.png)
好的,在安装 php 扩展方面,ubuntu 16 和 php7 有根本性的变化吗?
我刚刚将服务器从 ubuntu 14 升级到 16。该服务器需要运行自己的云。我也无法从头开始重建它 :/
apt-cache search php- | less
它按预期列出了可用的扩展..例如这是一个片段:
...
php-icinga - PHP library to communicate with and use Icinga
php-igbinary - igbinary PHP serializer
php-imagick - Provides a wrapper to the ImageMagick library
php-irods-prods - PHP client API for iRODS
php-jmespath - Declaratively specify how to extract elements from a JSON document
php-json-patch - Produce and apply json-patch objects
php-json-schema - implementation of JSON schema
因此我继续安装 php ImageMagick:
apt-get install php-imagick
安装的最后一行是
WARNING: Module imagick ini file doesn't exist under /etc/php/7.0/mods-available
果然,下面.../mods-available
没有 imagik 的 ini 文件。
有人知道这是什么原因造成的吗?
我在想,是不是因为 php 没有正确安装,或者系统不知为何安装了多个 php 版本,导致某个地方发生了某种冲突。我usr/bin
可以php@
看到php7.0*
但我完全陷入困境。
答案1
- 模块是.so 文件。
- 他们住 @
/usr/lib/php/<buildnumber>/<modulename>.so
- ini 文件只是
/etc/php/7.0/mods-available
映射到上面的 .so 文件之一,即它们包含一行真正重要的内容extension=<modulename>
- 运行
phpenmod <modulename>
只不过在/etc/php/7.0/apache/conf.d
&/etc/php/7.0/cli/conf.d
文件夹中创建一个参考文件。
简而言之,您需要确保 .so 文件存在,可用 mods 中的 ini 文件存在,并且它在相关位置被引用,例如 apache、fpm 或 cli。
希望这能帮助到和我处于同样境地的任何人。
正如其中一条评论中提到的,php 和 mysql 可能存在一个错误……它与加载顺序有关。参考文件的字母顺序/etc/php/7.0/apache/conf.d
实际上是 php 加载模块的顺序。如果您遇到 mysqli 问题,请尝试确保在 mysqli 模块之前加载 mysqlnd 模块……这为我解决了问题。