我正在编译 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_dir
它php.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 警告的那样导致以后出现模块冲突。