/ / Wykonywanie skryptu powłoki z PHP. Błąd składni dziennika Apache: ")" nieoczekiwane - php, linux, bash, shell, błąd składni

Wykonywanie Shell Script z PHP. Błąd składni dziennika Apache: ")" nieoczekiwane - php, linux, bash, shell, błąd składni

Nie mogę znaleźć błędu, skrypty działają dobrze z konsoli, myślałem, że to jest PHP, ale nie mogłem nic.

Może rzeczy na uprawnienia? Exec rzeczy? Naprawdę nie wiem wiele, mam nadzieję, że ktoś może mi pomóc.

Skrypt BASH (PO PROSTU WYSŁAJE ZADANIE NA DRUKARKĘ, ale umieściłem to na wszelki wypadek na wszelki wypadek):

#!/bin/bash
PBOX_DIR_TMP="/tmp"
DESDE=$1
HASTA=$2
FORMULARIO=$3
COLA=$4
FECHA=$(date +%F)
SPOOL="/spool.$$.txt"
ARCHIVOSALIDA="${PBOX_DIR_TMP}"/salida.$$.txt
RETURNCODE=0
echo "$DESDE"
echo "$HASTA"
echo "@PBSSFORM ${FORMULARIO}" > "${SPOOL}"
for ((i = ${DESDE};i <= ${HASTA};i++))
do
if [ $i > ${DESDE} ]
then
echo -e "f${FECHA}" >> "${SPOOL}"
echo "${i}" >> "${SPOOL}"
else
echo "${FECHA}" >> "${SPOOL}"
echo "${i}" >> "${SPOOL}"
fi
done
cat "${SPOOL}" | pboxsvc ${PBOX_DIR_BIN}/pboxlib.bin AplicarHostForm > "${ARCHIVOSALIDA}"
lp -d "${COLA}" "${ARCHIVOSALIDA}"
RETURNCODE=$?
rm "${ARCHIVOSALIDA}"
rm "${SPOOL}"
if [ ${RETURNCODE} -eq 0 ]
then
exit 1
else
exit 0
fi

Wywołanie PHP:

$cmd = "/printb/imprimirFormPlano.bin 1 2 FILE.PS Cola1";

Dziennik Apache:

/printb/imprimirFormPlano.bin 1: Syntax error: ")" unexpected
sh: 2: not found.

Skrypty działają, jeśli wywołasz je z powłoki w ten sposób: ./printb/imprimirFormPlano.bin 1 2 FILE.PS Cola1

Odpowiedzi:

1 dla odpowiedzi № 1

Wygląda na to, że domyślną powłoką jest twój apache sh zamiast bash. Spróbuj zmienić polecenie na

$cmd = "/bin/bash /printb/imprimirFormPlano.bin 1 2 FILE.PS Cola1";