【问题标题】:I don't see the extensions directives in php.ini, yet the extensions are loaded我在 php.ini 中看不到扩展指令,但扩展已加载
【发布时间】:2015-09-04 07:21:29
【问题描述】:

所以我有一个用于我们的 vps 的 php.ini,其中没有定义任何扩展(即“extension=php_curl.so”),但是当我在网页上查看 phpinfo() 时,我看到了我们所有的模块/扩展已加载(即 curl、mbstring、imagick 等)。这些扩展还可以在哪里/如何加载?

编辑

同样在 EashApache 中,在您的构建/配置文件的 php 扩展部分中,它会显示所有可用的扩展(启用/未启用)。

我确定在 vps 上的某个位置存在某种主 php.ini,或者可能是 vps 所在的服务器默认加载所有默认 php 配置。

【问题讨论】:

  • 可能扩展被编译进了php核心。检查 phpinfo() 输出中的“配置命令”部分。如果条目看起来像with-xyz=shared,则扩展被构建为共享对象。但是,如果该选项中没有 shared,它会进入 php 核心,并且无需进一步的 extension=... 指令即可使用。
  • 你先生是对的,至少我在那个部分有一些扩展名。请添加为答案,请检查一下!

标签: php apache configuration centos


【解决方案1】:

扩展可以编译为共享对象,您可以通过extension=... 指令或(但不应该恕我直言)通过dl() 加载。
扩展也可以编译到 php 核心中。然后它们就可以在没有更多“命令”的情况下使用。
phpinfo() 在其Configure Command 部分为您提供有关 php 核心的信息,例如

--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,共享
--with-mcrypt

pdo_oci 模块构建为共享对象/dll,而 mcrypt 模块内置于 php 核心中。

【讨论】:

    【解决方案2】:

    自动包含目录“extension_dir”(在 php.ini 中定义)中的扩展。

    【讨论】:

    • 它是一个 linux 系统,这取决于它可能已拆分配置并从 /var/lib/ 或 /usr/lib/ 加载一些 php 扩展作为通用系统库。例如,ubuntu 有一个主 php.ini,但也有 php5.ini 和 php5-fpm.ini,它们包含在主 php.ini 中,并在每个实例的基础上覆盖其设置。但是可以通过在 /etc/php5/conf.d 和 /etc/php5/mods-available/ 和 /etc/php5/apache2/conf.d 和 /etc/php5/apache2/php 中添加其他文件来进一步覆盖它。初始化
    猜你喜欢
    • 1970-01-01
    • 2011-07-19
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2011-11-19
    • 2016-12-30
    相关资源
    最近更新 更多