Проблема с прохождением на сервер

У меня возникла проблема с запуском функции passthru в моем php-коде (модуль Joomla). код следующий (это только фрагмент)

ob_start();
passthru("/usr/bin/whois 85.70.231.130 | /usr/bin/grep 'address:'",$code);
$whoisData = ob_get_contents();
ob_end_clean();
$whoisData = str_replace("address:", "", $whoisData);
$whoisArray = split("\n",$whoisData);
echo trim($whoisArray[1]);    

когда я запускаю это на своем локальном хосте, он повторяет то, что должен, но когда я запускаю этот код на рабочем сервере, он ничего не выводит, а переменная $code содержит 127 (команда не найдена). Я пытался добавить абсолютные пути к этим командам в функцию passthru, но это не помогло. Интересно, что когда я запускаю код прямо из терминала с помощью команды ssh и php, он работает хорошо, но когда он вызывается из контекста приложения, это не так. Кто-нибудь знает, что мне делать? спасибо

НЕКОТОРЫЕ РЕДАКТИРОВАНИЯ. Safe_mode на веб-сервере не видит папки /usr/bin и /bin/, так как лучше всего запускать эти команды из php?


person simekadam    schedule 06.04.2011    source источник


Ответы (3)


usr/bin/grep не выглядит допустимым путем к команде.

Отсутствие / в начале пути ко второй команде может объяснить ошибку command not found... даже если первая команда whois найдена.

person Pascal MARTIN    schedule 06.04.2011
comment
извините, я отредактировал код, который я разместил здесь, фрагмент был взят из моего небольшого тестового файла, где он не был обновлен, но на рабочем сервере, где я его тестирую, все в порядке ... Так что спасибо, это не суть :) отредактирую пост. - person simekadam; 06.04.2011

Вы смотрели, работает ли ваш веб-сервер / php с chroot?

print_r(glob('/*'));
if (file_exists('/usr/bin/grep') && file_exists('/usr/bin/whois')) {
   print "maybe its a permissions thing?\n";
} else {
   print "can't see executables required\n";
}

должен дать вам подсказку.

person symcbean    schedule 06.04.2011
comment
Таким образом, похоже, что он не работает с chroot. Он печатает это предупреждение: Предупреждение: file_exists () [function.file-exists]: действует ограничение open_basedir. Файл (/bin/grep) находится за пределами разрешенного пути (путей): (/mnt/data/accounts/m/medusedesign/data/www/new2:/tmp/uploads) в /mnt/data/accounts/m/ medusedesign/data/www/new2/untitled.php в строке 11 - person simekadam; 06.04.2011

Итак, я уже решил свою проблему с библиотекой phpwhois. Мне кажется, с моей конфигурацией сервера вряд ли эти функции будут работать хорошо. Так что спасибо за помощь :)

person simekadam    schedule 06.04.2011