Ниже представлен мой демо файл для задачи
Содержание index.php
shell_exec("./delete.sh param1 params2");
Скрипт выполним
Содержание demo.sh
#! /bin/bash
#! /usr/local/bin/php
destination_path=$1
source_path=$2
xpdf/pdftotext source_path destination_path && php textconv.php destination_path final_output
Скрипт demo.sh отлично работает при выполнении с терминала и генерирует желаемый результат, но не при выполнении через index.php.
Путь destination_path генерируется, но final_output не генерируется. Может ли кто-нибудь помочь? Возникает ли проблема &&?
@GeraldSchneider Спасибо за быстрые комментарии, это помогло в основном в завершении.
Во-первых, The shebang я использовал неправильно, мне пришлось удалить пространство между
Во-вторых, я могу использовать только один inetrpreter в первой строке, поэтому я удаляю php оттуда и использую его в своей команде вместо этого следующим образом
xpdf/pdftotext source_path destination_path && /usr/local/bin/php textconv.php destination_path final_output
Наконец, для цели отладки добавление 2> & 1 было хорошим способом
Окончательный сценарий
#!/bin/bash
destination_path=$1
source_path=$2
xpdf/pdftotext source_path destination_path && /usr/local/bin/php textconv.php destination_path final_output
Выполнение его как
$output = shell_exec("./delete.sh param1 params2 2>&1");
echo $output;