2015-10-20 1 views
-1

Je reçois une erreur 500 sur certains de mes scripts CGI, mais pas sur d'autres. Pas exactement sûr de ce qui cause le problème, de l'aide serait appréciée.Certains scripts CGI ne s'exécutent pas

/var/log/apache2/errors.log

[Tue Oct 20 06:12:38.436646 2015] [cgi:error] [pid 12492] [client 65.162.40.26:27886] AH01215: (2)No such file or directory: exec of '/home/rawr/development/hivecontrol/ark/startserver.sh' failed, r$ 
[Tue Oct 20 06:12:38.437968 2015] [cgi:error] [pid 12492] [client 65.162.40.26:27886] End of script output before headers: startserver.sh, referer: http://arkcontrol.servegame.com/ 

Works - messageserver.sh

#!/bin/bash 

echo Content-type: text/html 
echo 

message=$(echo "$QUERY_STRING" | sed -n 's/^.*message=\([^&]*\).*$/\1/p' | sed "s/%20/ /g") 
message=${message//+/ } 
messageserver $message 

echo "<HTML>" 
echo "<meta http-equiv='Refresh' content='1; url=../'>" 
echo "</HTML>" 

ne fonctionne pas - startserver.sh

#!/bin/bash 

echo Content-type: text/html 
echo 

ark_pid=$(pgrep ShooterGame) 
output=$(ls -l /proc/$ark_pid/exe) 

echo "<HTML>" 

if [[ $output == *ark2* ]]; 
then 
     echo "Server is already running" 
else 
     echo "Server didn't appear to be running" 
     #startark 
fi 

echo "<meta http-equiv='Refresh' content='1; url=../'>" 
echo "</HTML>" 

autorisations de fichier

[email protected]:~/development/hivecontrol/ark$ ls -l 
total 20 
-rwxrwxr-x 1 rawr rawr 1544 Oct 20 04:10 index.html 
-rwxrwxr-x 1 rawr rawr 357 Oct 20 05:50 killserver.sh 
-rwxrwxr-x 1 rawr rawr 272 Oct 20 05:12 messageserver.sh 
-rwxrwxr-x 1 rawr rawr 278 Oct 20 04:38 restartserver.sh 
-rwxrwxr-x 1 rawr rawr 369 Oct 20 05:56 startserver.sh 
+0

Supprimer la sortie d'erreur ls avec 'sortie = $ (ls -l/proc/$ ark_pid/exe 2>/dev/null)' et débogage avec 'echo" Output = $ {output} "' –

+0

aussi, le fichier de configuration httpd permet-il l'exécution de scripts CGI dans le répertoire où se trouve ce script? L'option ExecCGI est-elle répertoriée ici? –

+0

C'était un problème d'autorisation. Le moyen le plus simple que j'ai trouvé était de donner la propriété du groupe www-data. – user1023102

Répondre

0

Le script est correct. Vous avez probablement confondu la sortie ls pour une erreur. Vous avez juste besoin de corriger cette instruction if:

output=$(find /proc/$ark_pid/exe -maxdepth 1 -name '*ark2*') 
... 
if [[ -n $output ]] 
...