DNS-решение в php chroot

Я создал скрипт, который создает chroot и устанавливает php-fpm и apache2, чтобы заставить сайт работать. В моем сценарии я копирую все необходимые lib (s) в мои chroot lib (s) dir (s), используя это:

fileArray=$(ldd /usr/bin/php* 2>/dev/null | awk 'NF == 4 {print $3}; NF == 2 {print $1}' | sort -u) for file in $fileArray do dirName="$(dirname $file)" [ ! -d "$serverDir$dirName" ] && mkdir -p "$serverDir$dirName" || : cp $file "$serverDir$dirName" done 

но я видел, что, если я использую небольшой скрипт следующим образом:

 <?php print_r(gethostbynamel("google.com")); ?> 

Он не разрешается, если в libs нет libnss_dns.so.1. Теперь мой вопрос: какой файл мне нужен для «ldd» для копирования libnss_dns на мой chroot?

PS: Я не хочу копировать его вручную, потому что я хочу, чтобы мой скрипт был перекрестной архитектурой.

One Solution collect form web for “DNS-решение в php chroot”

Невозможно предоставить функцию ldd и ldd вы можете вызвать, чтобы включить libnss_dns.so.1 в список копируемых библиотек. Эта библиотека загружается динамически во время выполнения из-за содержимого файлов конфигурации, которые не имеют ничего общего с динамическим компоновщиком (а именно, /etc/nsswitch.conf ), и ldd просто не может знать, какие библиотеки могут или не могут динамически загружаться в этой программе путь.

Вы обнаружите, что, вероятно, будет целый набор других файлов, которые вам нужно скопировать вручную, чтобы создать рабочий chroot: все от /dev/null до конфигурации локали, в зависимости от того, что вы используете.

PS: Я не хочу копировать его вручную, потому что я хочу, чтобы мой скрипт был перекрестной архитектурой.

К сожалению, получение chroot в chroot раз – неотъемлемая непереносимая вещь. То есть, нет стандартных API, которые вы можете использовать для установки.

(Я думаю, вы не имеете в виду «кросс-архитектуру» здесь: если у вас есть рабочая процедура для настройки chroot, скажем, SPARC, то такая же процедура должна работать нормально, скажем, x86_64, учитывая ту же операционную систему .)

Вы можете попытаться использовать что-то вроде debootstrap для создания нового chroot. По крайней мере, он привязан к менеджеру пакетов, поэтому он обеспечивает наличие всех зависимостей. Даже тогда debootstrap оставляет несколько системных файлов (например, /etc/fstab ) в виде состояния TODO.

  • Не удается заставить php 7.1 работать с apache 2.4 (FAMP)
  • SQLSTATE Не удается подключиться к серверу MySQL на «127.0.0.1» (13), но работает «localhost»
  • Невозможно установить пакеты PHP в CentOS
  • Проблемы безопасности
  • PHP + Exim4 на Debian - почта не доставляется
  • Cacti / rrdtool error -> Poller ОШИБКА: SQL Row Failed !, Ошибка: '1033'
  • Как отладить сбой семпла?
  • MySQL и PHP (и другие языки)
  • Где безопасно размещать файлы, необходимые PHP в файловой системе Linux (согласно FHS)
  • Как обновить PHP до 5.3 на Debian 5.0 (Lenny)?
  • Не удается получить доступ к веб-странице из локальной сети
  • Linux и Unix - лучшая ОС в мире.