Ho una domanda quasi novella. Mi aspettavo di trovare il problema mentre scrivevo questa domanda, ma sono ancora bloccato.Il riavvio di Apache fa sì che DocumentRoot debba essere una directory, anche se è una directory e non sembrano esserci problemi di privilegi
Desidero modificare DocumentRoot per apache, ma continuo a ricevere il messaggio di errore "DocumentRoot deve essere una directory".
Situazione:
- Il codice è in esecuzione in una macchina virtuale VMWare 4.0.4 accumulo di 744.019
- La versione di Linux è Scientific Linux rilasciare 6.4 (Carbon)
- La versione di apache è Apache/2.2.15 (Unix) (questa è una yum install con niente di speciale )
Nel httpd.conf
DocumentRoot "/home/stave/www"
Quando ho riavviato, ottengo il messaggio
Starting httpd: Syntax error on line 292 of /etc/httpd/conf/httpd.conf:
DocumentRoot must be a directory
Le iniziative intraprese finora:
ho assicurato che la directory esiste:
ls -asl /home/stave
4 drwxrwxrwx. 2 stave stave 4096 Feb 9 09:08 www
It even has a file in it "index.html", so I am very sure that the directory exists
Ho pensato che potrebbe b A problema dei privilegi così (questa è una macchina di sviluppo virtuale isolata da internet, e sto facendo il troubleshooting quindi non sono troppo preoccupato per la sicurezza) come potete vedere ho impostato i privilegi su 777.
Ho persino cambiato l'utente che apache sta funzionando come (e ha confermato che il cambiamento ha funzionato con ps) sul pentagramma per garantire che i privilegi non debbano essere un problema.
StackOverflow
ci sono alcune risposte di overflow dello stack, ma la maggior parte di loro dicono "leggere il messaggio di errore. Si dice che la directory in realtà non esiste". Altri sottintendono che potrebbe esserci un taglio finale alla fine che sarebbe male.
Altri siti web
Il più utile che ho trovato è stato this che ha consigliato
Probabilmente ottenuto "DocumentRoot deve essere una directory" errore anche in realtà è una directory a causa di estensioni di SELinux. Eseguire system-config-securitylevel (o system-config-securitylevel) per disabilitare SELinux per httpd o dare i permessi di SELinux a quella directory: chcon -R -t -h httpd_sys_content_t/path/to/directory *
La mia versione di Linux non è Security Enhanced Linux, quindi senza comprenderlo l'ho provato comunque: nessun effetto.
Situazione attuale
ho esaurito le idee per provare, in modo da tutte le domande o consigli diagnostici sarebbe molto apprezzato
La riga 292 è sicuramente quella che stai guardando? Grep tutta la tua configurazione per DocumentRoot, forse ce n'è una che ti è sfuggita? –
Grazie Paul. Grep restituisce un paio di commenti nel prefisso e la riga incriminata che è la riga 292. (Attualmente la riga incriminata punta a/var/www/html che funziona). –
Hai provato ad avviare Apache sotto strace? Potrebbe dare un indizio su cosa sta succedendo. – voetsjoeba