Я перевожу свой текущий веб-сайт в Amazon AWS с общего сервера Red Hat. Когда я переместил свой рабочий код, я начал получать ошибку в моем вызове popen.
Ошибка: sh: 1: <command>: not found
Я нашел подобный вопрос 5 лет назад, но никогда не было действительно хорошего ответа. попен терпит неудачу с "ш: <команда>: не найдено"
Я использую XAMPP на своем ноутбуке с Ubuntu 14.04 для локального тестового стенда, и проблема там не возникает, но на моем экземпляре AWS. Использование Ubuntu 14.04lts с php5 и apache2 на экземпляре.
Я подозреваю, что это может быть настройка PHP или проблема с путями, но все, что я пробовал, провалилось, какие-либо предложения?
output = shell_exec('echo abc');
работал нормально.
Вот еще немного информации: Мой код:
if (file_exists(SitePATH."/solver/dkcube")){
//echo "Executable is there <br />";
error_reporting(E_ALL);
$handle = popen("$runvariable 2>&1","r");
echo "Line 1: '$handle'; ".gettype($handle). "<br />";
$contents = stream_get_contents($handle);
echo "Line 2: $contents"; pclose($handle);
Переменная переменной в основном представляет собой dkcube из file_exists с некоторыми переменными прохода. Эхо для Линии 2 является
«Строка 2: sh: 1: / var / www / html / solver / dkcube: not found»
Надеюсь, это даст вам больше информации.
Я попробовал sudo -H -u php_user sh -c 'content of runvariable here'
и он вернул ту же ошибку: sh: 1: /var/www/html/solver/dkcube: not found
Благодаря фактическим вопросам Дж.Ф. Себастьяна он дал мне лакомый кусочек, необходимый для решения моей проблемы. Используя его sudo -H -u php_user sh -c 'content of runvariable here'
вопрос, я определил, что это проблема Ubuntu, а не проблема PHP.
Основной причиной моей проблемы было то, что я запускал 32-битный исполняемый файл в 64-битной операционной системе и не имел правильных библиотек для моего исполняемого файла.
Сначала я должен был изменить sh с тире на bash, как показано здесь: исходная команда не найдена в оболочке sh
Затем мне пришлось установить правильные библиотеки, как указано здесь: https://unix.stackexchange.com/questions/75054/ldd-tells-me-my-app-is-not-a-dynamic-executable
Других решений пока нет …