安装 php 扩展时缺少 ini 文件 ubuntu 16 php 7

安装 php 扩展时缺少 ini 文件 ubuntu 16 php 7

好的,在安装 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

  1. 模块是.so 文件。
  2. 他们住 @/usr/lib/php/<buildnumber>/<modulename>.so
  3. ini 文件只是/etc/php/7.0/mods-available映射到上面的 .so 文件之一,即它们包含一行真正重要的内容extension=<modulename>
  4. 运行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 模块……这为我解决了问题。

相关内容