2013-07-23 8 views
26

Sono un utente di Windows. Sto usando xampp da un po 'di tempo ma improvvisamente nessuno dei miei file .php sta funzionando ora! ottengo questo messaggio di errore:Xampp Access Forbidden php


Accesso vietato!

Non si dispone dell'autorizzazione per accedere all'oggetto richiesto. È protetto da lettura o non è leggibile dal server.

Se pensi che si tratti di un errore del server, contatta il webmaster.

Errore 403

localhost Apache/2.4.4 (Win32) OpenSSL/0.9.8y PHP/5.4.16


posso vedere la lista dei miei file .php in localhost/Pratica (la cartella Practice è la cartella in cui sono stati salvati i miei file) Il file si apre anche quando faccio clic su di esso. Ma quando faccio clic su un pulsante "invia" in uno qualsiasi dei miei file, viene visualizzato questo errore. Per favore aiuto! Ho aggiornato xampp da 1.8.1 a 1.8.2, ma lo stesso problema persiste!

risposta

2

Vai a cartella XAMPP xampp/apache/conf/extra/httpd-xampp.c­onf

Modifica l'ultimo paragrafo:

#close XAMPP sites here 
. 
. 
. 
Deny from all 
. 
. 

a

#close XAMPP sites here 
. 
. 
. 
Allow from all 
. 
. 

o solo guardare questo video: http://www.youtube.com/watch?v=ZUAKLUZa-AU.

+0

Ci ho provato! Non ha funzionato .. Come ho detto, posso accedere a localhost, ma .php non viene elaborato da alcun interprete. –

+0

Ricevo l'errore solo quando clicco su un pulsante "invia"! –

+1

Guarda il link a cui il pulsante di invio è diretto, forse non è un link valido. Deve inviare il modulo a un file nella directory xampp dove sono gli altri. Cerca anche gli errori di denominazione, forse è example.php ma hai scritto exampel.php;) –

70

prova con questo codice qui sotto, aggiungerlo nella configurazione dell'host virtuale

<Directory "E:/MyProjects/wordpress/"> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride all 
     Order Deny,Allow 
     Allow from all 
     Require all granted 
</Directory> 

Ho risolto lo stesso problema in questo modo. Spero che sia d'aiuto.

+13

La chiave è "Richiedi tutto concesso". Questo ha fatto il trucco per me. Grazie! – mhulse

+1

Questo non funziona –

+0

Che problema hai visto? –

8

se il sistema operativo ubuntu utilizzato poi controllare chmod di/cartella di procedura cambiamento leggere i permessi di scrittura

Aprire terminale premere il tasto di scelta rapida Ctrl+Alt+T Goto

$ cd/opt/lampp/htdocs/

e cambiare cartella leggere scrivere ed eseguire il permesso utilizzando il comando chmod

per esempio nome della cartella è pratica e il percorso della cartella di /opt/lampp/htdocs/pratica

Tipo comando

$ sudo chmod 777 -R Practice 

ciò che è chmod e 777?visita questo link http://linuxcommand.org/lts0070.php

+0

Potresti per favore elaborare più la tua risposta aggiungendo un po 'più di descrizione della soluzione che fornisci? – abarisone

+1

Questo è molto insicuro, non si dovrebbe dare accesso in scrittura a nessuno per l'intera cartella! –

1

Ho avuto questo problema dopo aver spostato la cartella htdocs all'esterno della cartella xampp. Se si esegue questa operazione, è necessario modificare la root del documento in httpd.conf. Vedi https://stackoverflow.com/a/1414/3543329.

0

Ho avuto lo stesso problema. Quindi mi sono ricordato. Ieri avevo commentato questo codice in htttp-xampp.conf

Alias /phpmyadmin "C:/xampp/phpMyAdmin/" 
    <Directory "C:/xampp/phpMyAdmin"> 
#  AllowOverride AuthConfig 
#  Require local 
#  ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var 
    </Directory> 

così posso accedere al mio localhost utilizzando altri sistemi sulla stessa rete (LAN/WIFI), in quanto fanno localhost richiedono locale.

Così ho appena renderlo come

Alias /phpmyadmin "C:/xampp/phpMyAdmin/" 
    <Directory "C:/xampp/phpMyAdmin"> 
     AllowOverride AuthConfig 
#  Require local 
     ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var 
    </Directory> 

e ora il suo lavoro sulla mia macchina locale e anche localhost è accessibile tramite altri sistemi sulla stessa LAN/WIFI.

0

Hai cambiato qualcosa sull'host virtuale prima che smetta di funzionare?

aggiungere questa linea al xampp/apache/conf/extra/httpd-vhosts.conf

<VirtualHost localhost:80> 
    DocumentRoot "C:/xampp/htdocs" 
    ServerAdmin localhost 
    <Directory "C:/xampp/htdocs"> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
    </Directory> 
</VirtualHost> 
0

Nel mio caso ho esportato esempio Drupal dal server al localhost su XAMPP. Ovviamente non ha reso giustizia alla proprietà dei file e delle directory e Apache stava lanciando l'errore sopra riportato.

Questa è la proprietà di file e directory inizialmente:

enter image description here

per concedere le autorizzazioni di lettura ai file ed eseguire il permesso ai miei directory che potevo fare in modo che tutti gli utenti possono leggere, scrivere ed eseguire:

sudo chmod 777 -R 

ma che non sarebbe la soluzione ideale coz questo sarebbe migrato di nuovo al server e potrebbe finire con una lacuna nella sicurezza.

Uno script è dato in questo blog: https://www.drupal.org/node/244924

#!/bin/bash 

# Help menu 
print_help() { 
cat <<-HELP 
This script is used to fix permissions of a Drupal installation 
you need to provide the following arguments: 

    1) Path to your Drupal installation. 
    2) Username of the user that you want to give files/directories ownership. 
    3) HTTPD group name (defaults to www-data for Apache). 

Usage: (sudo) bash ${0##*/} --drupal_path=PATH --drupal_user=USER --httpd_group=GROUP 
Example: (sudo) bash ${0##*/} --drupal_path=/usr/local/apache2/htdocs --drupal_user=john --httpd_group=www-data 
HELP 
exit 0 
} 

if [ $(id -u) != 0 ]; then 
    printf "**************************************\n" 
    printf "* Error: You must run this with sudo or root*\n" 
    printf "**************************************\n" 
    print_help 
    exit 1 
fi 

drupal_path=${1%/} 
drupal_user=${2} 
httpd_group="${3:-www-data}" 

# Parse Command Line Arguments 
while [ "$#" -gt 0 ]; do 
    case "$1" in 
    --drupal_path=*) 
     drupal_path="${1#*=}" 
     ;; 
    --drupal_user=*) 
     drupal_user="${1#*=}" 
     ;; 
    --httpd_group=*) 
     httpd_group="${1#*=}" 
     ;; 
    --help) print_help;; 
    *) 
     printf "***********************************************************\n" 
     printf "* Error: Invalid argument, run --help for valid arguments. *\n" 
     printf "***********************************************************\n" 
     exit 1 
    esac 
    shift 
done 

if [ -z "${drupal_path}" ] || [ ! -d "${drupal_path}/sites" ] || [ ! -f "${drupal_path}/core/modules/system/system.module" ] && [ ! -f "${drupal_path}/modules/system/system.module" ]; then 
    printf "*********************************************\n" 
    printf "* Error: Please provide a valid Drupal path. *\n" 
    printf "*********************************************\n" 
    print_help 
    exit 1 
fi 

if [ -z "${drupal_user}" ] || [[ $(id -un "${drupal_user}" 2> /dev/null) != "${drupal_user}" ]]; then 
    printf "*************************************\n" 
    printf "* Error: Please provide a valid user. *\n" 
    printf "*************************************\n" 
    print_help 
    exit 1 
fi 

cd $drupal_path 
printf "Changing ownership of all contents of "${drupal_path}":\n user => "${drupal_user}" \t group => "${httpd_group}"\n" 
chown -R ${drupal_user}:${httpd_group} . 

printf "Changing permissions of all directories inside "${drupal_path}" to "rwxr-x---"...\n" 
find . -type d -exec chmod u=rwx,g=rx,o= '{}' \; 

printf "Changing permissions of all files inside "${drupal_path}" to "rw-r-----"...\n" 
find . -type f -exec chmod u=rw,g=r,o= '{}' \; 

printf "Changing permissions of "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n" 
cd sites 
find . -type d -name files -exec chmod ug=rwx,o= '{}' \; 

printf "Changing permissions of all files inside all "files" directories in "${drupal_path}/sites" to "rw-rw----"...\n" 
printf "Changing permissions of all directories inside all "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n" 
for x in ./*/files; do 
    find ${x} -type d -exec chmod ug=rwx,o= '{}' \; 
    find ${x} -type f -exec chmod ug=rw,o= '{}' \; 
done 
echo "Done setting proper permissions on files and directories" 

e la necessità di richiamare il comando:

sudo bash /Applications/XAMPP/xamppfiles/htdocs/fix-permissions.sh --drupal_path=/Applications/XAMPP/xamppfiles/htdocs/rkmission --drupal_user=daemon --httpd_group=admin 

Nel mio caso l'utente su cui Apache è in esecuzione è 'demone'. È possibile identificare l'utente da solo in esecuzione questo script php in un file php tramite localhost:

<?php echo exec('whoami');?> 

riportano di seguito le diritto utente con i permessi dei file giusti per Drupal:

enter image description here

Potrebbe essere necessario cambiarlo di nuovo una volta che è stato trasportato di nuovo al server!

0
A. #LoadModule vhost_alias_module modules/mod_vhost_alias.so 
B. <Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 

Sostituire con:

A. LoadModule vhost_alias_module modules/mod_vhost_alias.so 
B: 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 

Da E: \ xamp ** apache \ conf/httpd.conf **

+0

Questo apre l'intero disco a qualsiasi hacker che riesca ad accedere al tuo server web. È così gentile da parte vostra rendere le loro vite belle e facili! – RiggsFolly

+0

Se non capisci cosa fa una sezione del file 'httpd.conf', è meglio consultarla in quel manuale prima di dare un così cattivo consiglio agli altri – RiggsFolly

0

Il modo in cui ho deciso che questo era registri degli errori di impostazione correttamente, prima

<VirtualHost *:80> 
    DocumentRoot "D:/websites/test/" 
    ServerName test.dev 
    ErrorLog "D:/websites/test/logs/error.log" 
    CustomLog "D:/websites/test/logs/access.log" common 
    <Directory D:/websites/test/> 
     AllowOverride none 
     Require all granted 
    </Directory> 
</VirtualHost> 

Afte Questo errore viene registrato in "D:/websites/test/logs /" assicurati di creare la cartella dei registri da te. L'errore esatto che è stato registrato nel log degli errori è stato

AH01630: client negata dalla configurazione del server:

Il che mi ha segnalato a correggere soluzione utilizzando this link che ha detto per l'errore precedente

Require all granted 

richiesto. Il mio esempio di codice di esempio sopra risolve il problema a proposito.

0

Sto usando xxamp usare Ubuntu 16.04 - e il suo funzionamento benissimo per me

<VirtualHost *:80> 
    DocumentRoot "/opt/lampp/htdocs/" 
    ServerAdmin localhost 
    <Directory "/opt/lampp/htdocs"> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
    </Directory> 
</VirtualHost>