更改 php 模块目录

更改 php 模块目录

我正在编译 php,并将我的模块目录设置为 /usr/lib64/20090626-zts

我想将其更改为 /usr/lib64/php/modules,但找不到可以执行此操作的配置选项。

我可以在 php.ini 中更改它并移动目录,但是当我运行 phpize 并创建新模块时,它仍然将其放在 /usr/lib64/20090626-zts 中

答案1

我建议将 /usr/lib64/php/modules 设为指向具有该 ID 的文件夹的符号链接。从长远来看,这可以防止混合使用来自不同版本的 PHP 的扩展。

除此之外:您应该能够EXTENSION_DIR在运行 PHP 的配置之前通过将其设置为环境变量来设置它。例如

 $ EXTENSION_DIR=/my/location ./configure --with-some-extension

答案2

使用以下命令检查当前扩展目录:

php-config --extension-dir

您可以通过以下设置来更改extension_dirphp.ini

extension_dir="/usr/lib64/php/modules"

不要忘记重新启动 Apache。

答案3

我的问题并不完全相同,但由于这个问题是第一个出现的并且答案最终非常有用的问题,所以我将添加我的评论。

由于目录配置问题,我很难让 PHP(在 Centos7 下运行在 docker 容器中)使用 MySQL - 尽管我使用的是预构建的二进制文件,没有编译任何东西。虽然各种 pdo 和 mysqlnd.so 模块和 .ini 文件都安装在我的容器中(仅使用标准yum install php72和在PHP 安装向导),它们不在 PHP 寻找它们的默认位置。我不知道为什么。也许是某种 docker 问题?

无论如何,为了解决这个问题,我必须extension_dir向我的命令回显一个指令PHP.ini,并设置PHP_INI_SCAN_DIR环境变量。这些是我的 Dockerfile 中的相关命令

ENV PHP_INI_SCAN_DIR=/etc/php.d/
RUN echo 'extension_dir = "/usr/lib64/php/modules"' >> /etc/opt/remi/php72/php.ini

我希望这不会像@johanes 警告的那样导致以后出现模块冲突。

相关内容