У меня проблема, связанная с функцией PHP exec () и выводом программы HBPLUS. Когда я пытаюсь запустить следующую команду «./hbplus pPDBfile.pdb» из терминала Linux, все работает отлично (расширение для ./hbplus не требуется): она создает вывод несколько строк в терминале и файл pPDBfile.hb2. Это то что мне нужно. Вместо этого, когда я пытаюсь запустить его из PHP, он выдает ошибку «Ошибка сегментации».
$hbplus = "hbplus p1a6z.pdb"; //p1a6z.pdb is the pdb I have -> p in front is required.
exec($hbplus); //Segmentation fault.
Более того, я попытался заменить функцию exec () функциями system (), shell_exec () и passthru (). Также я попытался добавить
2>&1
чтобы иметь:
$hbplus = "hbplus p1a6z.pdb 2&>1";
Результат тот же.
У вас есть какие-нибудь предложения? Как вы думаете, проблема связана с выводом нескольких строк?
Заранее спасибо.
И pdb-файл, и hblus находятся в одном каталоге.
Если вы посмотрите на свой вызов командной строки (который работает), у вас есть ./ перед приложением. Это путь (та же папка). Попробуйте добавить абсолютные пути для обоих и посмотрите, работает ли это.
Нет, это не сработает, если я укажу абсолютный путь как в приложении, так и в файле pdb.






Вы пробовали определять абсолютные пути как для приложения, так и для файла .pdb?