我已经使用 jailkit 在 Ubuntu 10.04 系统上设置了一个 chroot jail。我复制了 php 和 mysql 的二进制文件,它们都运行正常。因此,从 chrooted 用户的命令行,我可以运行php somefile.php
命令,效果很好。
但问题是,我的 php 扩展在 chroot 下都不可用。我最需要的是 mysql 扩展。在我的 root 帐户下,它运行良好,但在 chroot 用户下则不行。
我在两个帐户上运行了该命令,php --ini
结果如下:
从根帐户来看,它看起来像:
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File: /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed: /etc/php5/cli/conf.d/apc.ini,
/etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/gd.ini,
/etc/php5/cli/conf.d/geoip.ini,
/etc/php5/cli/conf.d/imagick.ini,
/etc/php5/cli/conf.d/mcrypt.ini,
/etc/php5/cli/conf.d/memcache.ini,
/etc/php5/cli/conf.d/mysql.ini,
/etc/php5/cli/conf.d/mysqli.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini,
/etc/php5/cli/conf.d/ssh2.ini,
/etc/php5/cli/conf.d/suhosin.ini,
/etc/php5/cli/conf.d/tidy.ini
从监狱来看是这样的:
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File: (none)
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed: (none)
该路径/etc/php5/cli
在 chroot 中不存在,因此我假设这是指实际的根路径,当然它是存在的。
因此问题似乎是没有任何 php 扩展在 chroot 中加载。但我不知道为什么会这样?
答案1
通常情况下,您不会将库等复制到 jail。您需要做的是运行不同的 jailkit 命令。这些命令会创建链接,而不是复制文件。
如果你在添加 php 之前已经创建了 jail,则可以按照此处说明的过程进行操作:
https://www.faqforge.com/linux/add-php-in-ssh-jail-ispconfig-3/
我最终做的是(因为 jailkit 在执行 jk_update 时返回了错误)是这样的:
jk_init -j /var/www/clients/client123/web123/ basicshell editors extendedshell netutils ssh sftp scp groups jk_lsh php
这是 jailkit 网站的链接,您可以在其中查看更多命令
答案2
啊!我现在搞定了。我刚刚/etc/php5/cli
在 chroot 中创建了包含 ini 文件的目录,然后将依赖库复制过来,现在一切运行良好!