Apache non funziona con la cartella Sites dell'utente su macOS 10.13 High Sierra


8

Ho seguito questa guida per configurare Apache su High Sierra: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/

L'ho usato per installarlo su Sierra.

Ma quando vado a http://localhost/~scott/trovo "Proibito. Non hai i permessi per accedere a / ~ scott / su questo server".

Un suggerimento su questa domanda simile: localhost / userdir su macOS High Sierra è caricare i vhosts. Che ho provato, ma ho ancora "proibito".

È cambiato qualcosa tra Sierra e High Sierra che impedirebbe ad Apache di lavorare con le cartelle dei siti degli utenti?


Prova apachectl configteste aggiorna l'output
Rakesh kumar il

RestituisceSyntax OK
sfyfedotcom il

Ok, visita gentilmente l'URL localhost / ~ tuonomeutente
Rakesh kumar il

"Proibito. Non hai i permessi per accedere a / ~ scott / su questo server."
sfyfedotcom,

Risposte:


8

Questo ha funzionato per me quando ho riscontrato lo stesso problema.

Controllare il file "/private/etc/apache2/extra/httpd-userdir.conf".

modificare

#Include /private/etc/apache2/users/*.conf

per

Include /private/etc/apache2/users/*.conf

e riavvia apache.

Da: /programming/39631351/apache-localhost-403-forbidden-with-macos-sierra


Quella riga /private/etc/apache2/extra/httpd-userdir.confè già non commentata, dal link delle istruzioni che ho seguito.
sfyfedotcom,

hai riavviato apache "sudo apachectl restart"
Robert,

Sì. Ho fatto tutte le modifiche ai file di configurazione di Apache
sfyfedotcom,

4

Per consentire l'accesso alla directory dei siti, è necessario aggiungere quanto segue a /etc/apache2/httpd.conf:

<DirectoryMatch "/Users/.*/Sites">
  Require all granted
</DirectoryMatch>

La configurazione predefinita di Apache è impostata su negata su /, quindi è necessario consentire esplicitamente l'accesso a tutto.


Apache aggiunto e riavviato. Non ha fatto alcuna differenza
sfyfedotcom il

Ho avuto lo stesso problema. Stava ottenendo il "Funziona!" su locahost, ma non è riuscito a far funzionare le directory degli utenti. Risolto il problema risolto dalla regola DirectoryMatch in questo modo. Grazie!
Karra,

4

Solo per espandere la risposta di Diogo Lima.

Con l'aggiornamento a High Sierra, Apple ha effettuato copie delle precedenti impostazioni di apache e ha aggiunto un ~ precedente ai file * .conf sia nelle cartelle / etc / apache2 che in / etc / apache2 / extra. Se si utilizzano host virtuali o host ssl-virtual, sarà necessario spostare anche le versioni precedenti per quei file .conf.

mv /etc/apache2/extra/httpd-vhosts.conf~previous /etc/apache2/extra/httpd-vhosts.conf
mv /etc/apache2/extra/httpd-ssl.conf~previous /etc/apache2/extra/httpd-ssl.conf

Questa era un'installazione pulita di High Sierra, quindi non avevo alcun file di configurazione precedente
sfyfedotcom

Quindi, solo per chiarire, hai funzionato su Sierra, ma non hai fatto un aggiornamento, ma piuttosto un'installazione pulita completa? Ricordo quando ho configurato il funzionamento su Sierra di aver creato un collegamento simbolico dalla cartella Sites alla cartella / Library / WebServer / Documents e di essermi assicurato di essermi concesso l'autorizzazione (lettura e scrittura). Dal momento che sembra essere solo un problema di autorizzazioni in questa fase, hai creato il collegamento simbolico e modificato le autorizzazioni?
James Martin,

Sì, è corretto. Faccio sempre un'installazione pulita di nuove versioni di macOS. Sono consapevole di poterlo fare, ma voglio mantenere entrambi /Library/WebServer/Documentse Users/username/Sitescome percorsi separati per i progetti Web, poiché è quello che sono stato in grado di fare su macOS negli ultimi 10 anni.
sfyfedotcom,

Quindi sembra che avresti bisogno di eseguire due istanze separate di Apache sullo stesso computer, ma ciò non vanificherebbe l'intero scopo del bilanciamento del carico dei siti Web che Apache ora offre quando eseguito da una singola istanza? La raccomandazione delle migliori pratiche di Apple è di non utilizzare più Utenti / nome utente / Siti e attenersi alla Libreria / Webserver / Documenti
James Martin,

La singola istanza di Apache è un cavo per la lettura di progetti Web da più directory. È così che l'ho installato da anni.
sfyfedotcom,



1

Stamattina appena aggiornato. Utilizzando la cartella Sites in / Utenti / nome utente.

Eseguito il backup e sostituito httpd.conf, httpd-userdir.conf e https-vhosts.conf con le ~ varianti precedenti.

Ho funzionato sudo apachectl configteste ho ricevuto l'errore PHP (PHP aggiornato a 7 in High Sierra). Modificato http.conf per avviare PHP7 e ora tutto funziona di nuovo.


+1 per nota compresasudo apachectl configtest
David C

1

Possibile soluzione (dopo aver fallito con tutti i suggerimenti di cui sopra). Il problema è con l'autorizzazione della home directory. Dovrebbe essere eseguibile per gruppo / altri:

sudo chmod go + x / Users / nome utente

dove "nome utente" deve essere sostituito con il nome utente effettivo. Dopo questo, funziona!


0

Uff !! L'ho capito da solo.

Fai questi passaggi

Passaggio 1: aprire il terminale ed eseguire questo comando di seguito

sudo atom /etc/apache2/httpd.conf

E quindi Rimuovi commento la linea rimuovendo il "#"segno prima di esso

LoadModule php7_module libexec/apache2/libphp7.so

Passaggio 2: eseguire il comando riportato di seguito

cd /private/etc

sudo cp php.ini.default php.ini

Passaggio 3: quindi vai alla tua /Library/WebServer/Documentsdirectory e fai un

sudo chown -R  root yourprojectname

Torna al browser Safari e digita "http://localhost/yourprojectname"

Sei pronto per partire.

Sto usando MacOS High Sierra 10.13, è stato aggiornato ieri mattina.


localhostscappare /Library/WebServer/Documentsfunziona bene. Il problema sta funzionando localhost/~scottda /Users/Scott/Sites.
sfyfedotcom,

0

Ho trascorso l'intera mattinata a capirlo, ma alla fine ha funzionato. Spero che questo possa essere utile per qualcuno.

Ho seguito una guida, ma con un leggero cambiamento.

Ora posso accedere alle cartelle localhost, ma ...

Prima dell'alta sierra era come: http://localhost/~username/smomesite.local

Adesso è come: http://localhost/smomesite.local

Non più ~usernamerichiesto.


Non voglio cambiare il percorso web predefinito di apache nella mia cartella utente. Nella versione precedente di macOS sono stato in grado di eseguire file / siti dalla Users/myname/Sitesdirectory e/Library/WebServer/Documents
sfyfedotcom

0

Ho appena avuto lo stesso problema e volevo fare esattamente quello che volevi (mantieni il root su / Library / WebServer / Documents, ma consenti anche le cartelle dei siti degli utenti). Non sono sicuro se questo sarà utile, ma dopo averlo provato per ore stasera, guardando riga per riga attraverso tutti i file .conf e chiedendomi cosa non andava, mi sono reso conto che il processo httpd non era in grado di leggere il mio propria directory utente. Per qualche motivo è stato impostato su 750 e l'utente _www non è in grado di leggerlo. Una volta l'ho risolto eseguendo "chmod 755". nella mia directory utente, la cartella Sites è stata mostrata in alto.

Non sono sicuro di come sia diventata la mia directory utente, in quanto sembra che siano predefiniti a 755 quando creo un nuovo utente. E avevo già ricontrollato molte volte che la mia cartella Sites era impostata su 755.


Ho appena provato e riavviato Apache. Ancora "Proibito: non hai i permessi per accedere a / ~ username / su questo server"
sfyfedotcom

0

Ho avuto lo stesso problema. Ho decommentato le due righe seguenti (come già suggerito in un'altra risposta)

#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Ma ho ancora avuto lo stesso errore. Il trucco per me era decommentare queste righe aggiuntive nel file httpd.conf:

#LoadModule userdir_module libexec/apache2/mod_userdir.so 
#LoadModule include_module libexec/apache2/mod_include.so 
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Spero che aiuti.


Ho già commentato quelle righe
sfyfedotcom il

0

Succede che l'aggiornamento abbia spostato tutta la configurazione precedente nei file .conf ~ precedente. Se sposti /etc/apache2/extra/httpd-userdir.conf~previous in /etc/apache2/extra/httpd-userdir.conf e /etc/apache2/extra/httpd.conf~previous in / etc / apache2 / extra / httpd.conf, dovrebbe funzionare come prima.

mv /etc/apache2/extra/httpd-userdir.conf /etc/apache2/extra/httpd-userdir.conf~high-sierra
mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf~high-sierra
mv /etc/apache2/extra/httpd-userdir.conf~previous /etc/apache2/extra/httpd-userdir.conf
mv /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
apachectl restart

Questa era un'installazione pulita di High Sierra, quindi non avevo alcun file di configurazione precedente
sfyfedotcom

0

Ho avuto lo stesso problema. La risoluzione è stata facile. Vedi la risposta pubblicata qui: https://apple.stackexchange.com/a/306390/129503

Ho affrontato lo stesso dopo aver effettuato l'aggiornamento a High Sierra prima di oggi. Ho scoperto che i seguenti file apache sono stati sostituiti con versioni nuovissime. Fortunatamente per tutti questi file esisteva un file FILE ~ precedente nella stessa cartella. Ho appena copiato la ~ versione precedente a quella originale, ho riavviato Apache e tutto è andato bene.

Nella cartella /etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Esempio:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

0

Sostituire

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

dai file precedenti ~ precedenti.

Potresti ricevere l'errore del modulo php5 in httpd.conf, sostituire php5 con php7 e i tuoi siti dovrebbero iniziare a funzionare.

Sostituire

LoadModule php5_module libexec/apache2/libphp5.so

Con

LoadModule php7_module libexec/apache2/libphp7.so

0

Ho appena aggiornato e ho avuto esattamente gli stessi problemi. Non uso i vhosts. La soluzione per me era garantire:

In https.confcommento

LoadModule userdir_module libexec/apache2/mod_userdir.so

LoadModule authz_host_module libexec/apache2/mod_authz_host.so

LoadModule authz_user_module libexec/apache2/mod_authz_user.so

LoadModule authz_core_module libexec/apache2/mod_authz_core.so

e assicurarsi che extra/httpd-user.confabbia la linea:

UserDir Sites
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.