GNU/Linux >> Linux Esercitazione >  >> Linux

Apache CGI nella directory utente Fine dell'output dello script prima delle intestazioni

Alla fine ho risolto. Grazie a @JimB, perché nel suo commento ha indicato SUEXEC, che non conoscevo (o semplicemente ignorato fino ad ora).

Dopo aver letto un po' la documentazione suEXEC, ho capito che il problema doveva essere lì. Quindi, ho dato un'occhiata alla configurazione:

# suexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=1000
 -D AP_HTTPD_USER="apache"
 -D AP_LOG_SYSLOG
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=1000
 -D AP_USERDIR_SUFFIX="public_html"

e tutto sembrava ok (buon uid/gid per il mio utente, userdir_suffix va bene, ecc.). Quindi ho dato un'occhiata ai log di sistema:

# journalctl -b | grep "suexec"
May 22 11:43:12 caladan suexec[5397]: uid: (1000/user) gid: (1000/user) cmd: test.cgi
May 22 11:43:12 caladan suexec[5397]: directory is writable by others: (/home/user/public_html/cgi-bin)

e questo è il problema:il mio cgi-bin directory era scrivibile da altri .

Ho risolto semplicemente cambiando i permessi in 755 .


Questo a volte si presenta quando provi a chiamare altri metodi del modulo Python dal tuo cgi dove potresti aver lasciato alcune istruzioni 'print' (forse per il debug). Quindi scansiona il tuo codice per qualsiasi istruzione 'print', a volte questo risolve facilmente il problema.


Per me, ha funzionato quando ho cambiato la linea Shebang (#!/usr/bin/sh ) a #!/usr/bin/env sh . Ho scoperto che qualsiasi frase di Shebang da Qual è il Bash shebang preferito? sembrava funzionare (si noti tuttavia che sh è diverso da bash quindi se vuoi usare sh insisti).

Quindi questo codice ha funzionato per me:

#!/usr/bin/env sh
echo "Content-type: text/plain"
echo ""
echo "Hello"

Inoltre, secondo il post menzionato sopra, sembra /usr/bin/env sh sembra preferito a /bin/sh . Non ho idea delle cose per directory.


Linux
  1. Perché non posso usare Cd in uno script Bash??

  2. Installa WordPress su Linux con Apache

  3. Impostazione dell'umask dell'utente Apache

  4. MYSQL differisce nell'output dallo script

  5. Password antipanico su Linux

Aggiungi uno script bash al percorso

Come eseguire uno script bash?

Esecuzione di Apache come utente diverso

Cosa produce pwd?

Eseguire uno script di shell come utente diverso

Come eseguire il grep dell'output di ps con le intestazioni