2012-12-13 84 views
0

我找不到错误,脚本从控制台运行正常,我认为这是PHP的东西,但没有任何罚款。从PHP执行Shell脚本。 Apache日志语法错误:“)”意外

也许权限的东西?执行的东西?我真的不太了解,希望有人能帮助我。谢谢!

bash脚本(SIMPLY发送作业到打印机,但我把它enterely以防万一):

#!/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 

PHP电话:

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

Apache日志:

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

如果我像这样从shell中调用它,脚本将起作用:./printb/imprimirFormPlano.bin 1 2 FILE.PS Cola1

+0

这与PHP有什么关系? – thatidiotguy

+0

@thatidiotguy我需要从PHP调用它。它将基于网络 – JorgeeFG

回答

1

它看起来像你的Apache的默认外壳是sh而不是bash。尝试将您的命令更改为

$cmd = '/bin/bash /printb/imprimirFormPlano.bin 1 2 FILE.PS Cola1'; 
+0

谢谢,它在apache的错误日志中给出不同的输出:/printb/imprimirFormPlano.bin:无法执行二进制文件。 sh:2:找不到(我把它从.sh转换为bin) – JorgeeFG

+0

@Jorge转换成怎么样? – NullUserException

+0

@NullUserException对不起,它的encripted转换为bin的。 – JorgeeFG