Je suis un utilisateur Windows. J'utilise xampp depuis un certain temps, mais soudain, aucun de mes fichiers .php ne fonctionne maintenant!…. Je reçois ce message d'erreur:
Accès interdit!
Vous n'êtes pas autorisé à accéder à l'objet demandé. Il est protégé en lecture ou illisible par le serveur.
Si vous pensez que ceci est une erreur de serveur, veuillez contacter le webmaster.
Erreur 403
localhost Apache/2.4.4 (Win32) OpenSSL/0.9.8y PHP/5.4.16
Je peux voir la liste de mes fichiers .php dans localhost/Practice (Practice est le dossier dans lequel j'ai enregistré mes fichiers) Le fichier s'ouvre même lorsque je clique dessus . Mais lorsque je clique sur l'un des fichiers ' Le bouton submit 'à l'intérieur de l'un de mes fichiers, il donne cette erreur . S'il vous plaît, aidez-moi! J'ai mis à jour xampp de 1.8.1 à 1.8.2 mais le même problème persiste!
Essayez avec le code ci-dessous, ajoutez-le à votre configuration d’hôte virtuel. Ajoutez ces lignes au fichier httpd-vhosts.conf
:
<Directory "c:/<path-to-projects>/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Allow from all
Require all granted
</Directory>
J'ai résolu le même problème de cette façon. J'espère que ça aide.
si vous utilisez le système d’exploitation Ubuntu, vérifiez dans le dossier chmod/Practice.
Ouvrir le terminal en appuyant sur la touche de raccourci Ctrl+Alt+T
Aller à
$ cd/opt/lampp/htdocs/
et modifier le dossier en lecture, en écriture et en exécuter à l'aide de la commande chmod
par exemple, le nom du dossier est la pratique et le chemin du dossier./opt/lampp/htdocs/practice
Commande de type
$ Sudo chmod 777 -R Practice
qu'est-ce que chmod
et 777
? visitez ce lien http://linuxcommand.org/lts0070.php
La façon dont j'ai résolu ceci était les journaux d'erreur d'installation correctement, d'abord
<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>
Après avoir enregistré cette erreur dans "D:/websites/test/logs /" , veillez à créer vous-même le dossier des journaux. L’erreur exacte enregistrée dans le journal des erreurs était
AH01630: client refusé par la configuration du serveur:
Ce qui m'a amené à corriger la solution en utilisant ce lien qui disait pour l'erreur ci-dessus
Require all granted
est requis. Mon exemple de code ci-dessus résout le problème en passant.
J'utilise xampp avec Ubuntu 16.04 - et ça fonctionne très bien pour moi
<VirtualHost *:80>
DocumentRoot "/opt/lampp/htdocs/"
ServerAdmin localhost
<Directory "/opt/lampp/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Allez dans votre dossier Xampp xampp/Apache/conf/extra/httpd-xampp.conf
Editez le dernier paragraphe:
#close XAMPP sites here
.
.
.
Deny from all
.
.
à
#close XAMPP sites here
.
.
.
Allow from all
.
.
ou regardez simplement cette vidéo: http://www.youtube.com/watch?v=ZUAKLUZa-AU .
J'ai eu ce problème après avoir déplacé le dossier htdocs en dehors du dossier xampp. Si vous faites cela, alors vous devez changer la racine du document dans httpd.conf. Voir https://stackoverflow.com/a/1414/3543329 .
Pour moi, cela a été résolu instantanément par ce qui suit
recherchez les lignes suivantes par cont + f:
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
AllowOverride AuthConfig
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
seulement changer local ----> tout est accordé, donc ça devient comme ça
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
AllowOverride AuthConfig
Require all granted
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
Après cela, l'hôte local cessera d'afficher l'erreur et affichera le panneau d'administration. J'ai trouvé cette solution dans une vidéo ici: https://www.youtube.com/watch?v=MvYyEPaNNhE
J'ai eu le même problème. Donc je me suis souvenu. Hier, j'avais commenté ce code dans htttp-xampp.conf
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
# AllowOverride AuthConfig
# Require local
# ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
Donc, je peux accéder à mon hôte local en utilisant un autre système sur le même réseau (LAN/WIFI), car localhost nécessite local.
Alors je le fais juste comme
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
AllowOverride AuthConfig
# Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
et maintenant son travail sur ma machine locale et localhost est accessible en utilisant d'autres systèmes sur le même LAN/WIFI.
Dans mon cas, j'ai exporté l'instance Drupal du serveur vers l'hôte local sur XAMPP. De toute évidence, cela ne rendait pas justice à la propriété des fichiers et des répertoires et Apache renvoyait l'erreur ci-dessus.
C'est la propriété des fichiers et des répertoires initialement:
Pour accorder des autorisations de lecture sur mes fichiers et exécuter des autorisations sur mes répertoires, je peux le faire pour que tous les utilisateurs puissent lire, écrire et exécuter:
Sudo chmod 777 -R
mais ce ne serait pas la solution idéale, car cela serait ramené sur le serveur et risquerait de créer une faille de sécurité.
Un script est donné dans ce 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"
Et besoin d'invoquer la commande:
Sudo bash /Applications/XAMPP/xamppfiles/htdocs/fix-permissions.sh --drupal_path=/Applications/XAMPP/xamppfiles/htdocs/rkmission --drupal_user=daemon --httpd_group=admin
Dans mon cas, l'utilisateur sur lequel Apache s'exécute est "daemon". Vous pouvez identifier l'utilisateur en exécutant simplement ce script php dans un fichier php via localhost:
<?php echo exec('whoami');?>
Vous trouverez ci-dessous le bon utilisateur avec les autorisations de fichiers appropriées pour Drupal:
Vous devrez peut-être le changer une fois qu'il est renvoyé sur le serveur!
Avez-vous changé quelque chose sur l'hôte virtuel avant qu'il ne cesse de fonctionner?
Ajoutez cette ligne à 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>
A. #LoadModule vhost_alias_module modules/mod_vhost_alias.so
B. <Directory />
AllowOverride none
Require all denied
</Directory>
Remplacer par:
A. LoadModule vhost_alias_module modules/mod_vhost_alias.so
B:
<Directory />
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
De E:\xamp ** Apache\conf/httpd.conf **