php вызывает bash скрипт с проблемой нескольких команд

1

Ниже представлен мой демо файл для задачи

Содержание 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 не генерируется. Может ли кто-нибудь помочь? Возникает ли проблема &&?

  • 0
    имеет ли пользователь, запускающий php, необходимые разрешения для выполнения сценария bash?
  • 0
    @swifty да, у пользователя есть разрешение. Сценарий выполняется нормально, но выполняется на полпути, путь назначения генерируется xpdf, но окончательный путь не создается textconv.php.
Показать ещё 6 комментариев
Теги:

1 ответ

0
Лучший ответ

@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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню