更改php模块目录


8

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

我想将其更改为/ usr / lib64 / php / modules,但是我找不到配置选项。

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


有没有时间来测试这一点:EXTENSION_DIR=/usr/lib64/php/modules phpize
马克·瓦格纳

Answers:


4

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

除此之外:EXTENSION_DIR在运行PHP的configure之前,您应该能够通过将其设置为环境变量来进行设置。就像是

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

是的,我不希望将来的模块发生冲突。我想我只会保留文件夹名称。
copacetic

8

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

php-config --extension-dir

你可以通过设置改变它extension_dirphp.ini

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

不要忘记重启Apache。


0

我的问题并不完全相同,但是由于这个问题是第一个出现的问题,最终对他们很有帮助,所以我将添加我的评论。

由于目录配置,我无法使PHP(在docker容器中运行的Centos7下)使用MySQL-尽管我使用的是预先构建的二进制文件,但没有进行任何编译。尽管在我的容器中安装了各种pdo和mysqlnd.so模块以及.ini文件(仅使用标准yum install php72以及PHP安装向导中指定的所有其他内容),但是它们不在PHP寻找它们的默认位置。我不知道为什么。也许这是某种码头工人的事情?

无论如何,要解决该问题,我必须向我回显extension_dir指令,PHP.ini并且还应设置PHP_INI_SCAN_DIRenv变量。这些是我的Dockerfile中的相关命令

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

我希望这不会导致稍后@johanes警告时导致模块冲突。


>“它们不在默认位置。”您没有正确遵循向导的说明,而是选择了“单一版本”,所有内容均安装在默认位置。SCL使用不同的路径来允许多个版本。
Remi Collet

@RemiCollet感谢您的回复。我从向导中选择了单一版本-这就是我想要的,因为我只希望容器中有一个PHP版本。我没有在dockerfile中添加的向导说明的唯一部分是`yum --enablerepo = remi-php72-test install php-xxx`和yum update。我在这里想念什么吗?
夏莱斯德布

这些最新命令适用于测试软件包和其他扩展名(将xxx替换为所需扩展名)
Remi Collet

@RemiCollet对不起,我一定有点傻。您是说如果使用测试包,这将解决我的mysql模块不进入 .../remi/...文件夹的问题?
查尔斯戴布

1
我说php- *软件包(单个版本)使用标准路径,而php72-php-*(SCL,多个版本)使用/ opt / remi。参见blog.remirepo.net/pages/English-FAQ#scl
Remi Collet
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.