popen перестал работать с “sh: <команда>: не найденный”

Я разрабатываю серверное приложение, и я недавно встретился с этой странной ошибкой на сервере тестирования (Debian Сжимают).

Каждый исполняемый файл я передаю сбоям popen с сообщением:

sh: sort: not found // happens to any command

Это происходит независимо, указываю ли я на полный путь, возвращенный "типом", или сохраняю его коротким. Как отмечалось ранее, это, оказывается, в только одной тестовой среде, добавляет беспорядок, выполняет ту же ОС и не имело никакой проблемы вообще.

Popen, по-видимому, использует sh для выполнения команд, но если я выполняю ту же команду через командную строку (удар или sh), все прекрасно

Заранее спасибо

(PS: даже испытанный Python os.popen только для закрепления этого главного скребка, и это работает!)

Отредактируйте это - простой вызов, который перестал работать:

$command="tail -10 myfile";
$handle = popen($command.' 2>&1','r');
if($handle){
  while (!feof($handle)){
  ....//process buffer
  }
}

возвраты:

sh: tail: not found
7
задан smallmeans 27 April 2010 в 01:50
поделиться

1 ответ

Вероятно, ваш ПУТЬ НЕ настроен должным образом при вызове popen. Я предполагаю, что это проблема конфигурации PHP, но вы можете обойти ее следующим образом:

  1. Запустите which tail , чтобы определить полный путь к хвостовой программе.
  2. Вызов popen , указав путь, указанный в 1.
1
ответ дан 7 December 2019 в 20:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: