Я пользователь Windows. Я довольно давно использую xampp, но ни один из моих .php-файлов не работает сейчас! Я получаю это сообщение об ошибке:
Доступ запрещен!
У вас нет разрешения на доступ к запрашиваемому объекту. Он либо защищен от чтения, либо не читается сервером.
Если вы считаете, что это ошибка сервера, обратитесь к веб-мастеру.
Ошибка 403
localhost Apache / 2.4.4 (Win32) OpenSSL / 0.9.8y PHP / 5.4.16
Я могу увидеть список моих .php-файлов в localhost / Practice (Практика – это папка, в которой я сохранил мои файлы). Файл даже открывается, когда я нажимаю на него. Но когда я нажимаю любую кнопку «отправить» внутри любого из моих файлов, она дает эту ошибку. Пожалуйста помоги! Я обновил xampp с 1.8.1 до 1.8.2, но по-прежнему сохраняется та же проблема!
Попробуйте этот код ниже, добавьте его в свою конфигурацию виртуального хоста
<Directory "E:/MyProjects/wordpress/"> Options Indexes FollowSymLinks MultiViews AllowOverride all Order Deny,Allow Allow from all Require all granted </Directory>
Так я исправил ту же проблему. Надеюсь, поможет.
если используется операционная система ubuntu, тогда проверьте chmod of / Practice folder change read write permission
Открытая клавиша быстрого доступа к нажатию клавиши Ctrl+Alt+T
Goto
$ cd / opt / lampp / htdocs /
и изменить права на запись и запись в папку с помощью команды chmod
например, имя папки – практика и путь к папке / opt / lampp / htdocs / practice
Команда типа
$ sudo chmod 777 -R Practice
что такое chmod
и 777
? перейдите по этой ссылке http://linuxcommand.org/lts0070.php
Войдите в свою папку xampp/apache/conf/extra/httpd-xampp.conf
Отредактируйте последний абзац:
#close XAMPP sites here . . . Deny from all . .
в
#close XAMPP sites here . . . Allow from all . .
или просто посмотреть это видео: http://www.youtube.com/watch?v=ZUAKLUZAA .
У меня возникла эта проблема после перемещения папки htdocs вне папки xampp. Если вы это сделаете, вам нужно изменить корень документа в httpd.conf. См. https://stackoverflow.com/a/1414/3543329 .
У меня такая же проблема. Поэтому я вспомнил. Вчера я прокомментировал этот код в htttp-xampp.conf
Alias /phpmyadmin "C:/xampp/phpMyAdmin/" <Directory "C:/xampp/phpMyAdmin"> # AllowOverride AuthConfig # Require local # ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var </Directory>
SO Я могу получить доступ к моему локальному хосту, используя другую систему в той же сети (LAN / WIFI), поскольку локальный хост требует локального использования.
Поэтому я просто делаю это как
Alias /phpmyadmin "C:/xampp/phpMyAdmin/" <Directory "C:/xampp/phpMyAdmin"> AllowOverride AuthConfig # Require local ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var </Directory>
и теперь его работа на моем локальном компьютере, а также localhost доступна с использованием других систем в одном и том же LAN / WIFI.
Вы что-то изменили на виртуальном хосте до того, как перестали работать?
Добавьте эту строку в 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>
В моем случае я экспортировал экземпляр Drupal с сервера на localhost на XAMPP. Очевидно, он не отдавал должное владению файлами и каталогами, и Apache выбрасывал вышеуказанную ошибку.
Это собственность файлов и каталогов изначально:
Чтобы предоставить разрешения на чтение для моих файлов и выполнить разрешение на мои каталоги, я могу сделать так, чтобы все пользователи могли читать, писать и выполнять:
sudo chmod 777 -R
но это не было бы идеальным решением, потому что это было бы перенесено обратно на сервер и может закончиться защитой лазейки.
Сценарий приведен в этом блоге: 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"
И нужно вызвать команду:
sudo bash /Applications/XAMPP/xamppfiles/htdocs/fix-permissions.sh --drupal_path=/Applications/XAMPP/xamppfiles/htdocs/rkmission --drupal_user=daemon --httpd_group=admin
В моем случае пользователь, на котором работает Apache, является «демоном». Вы можете идентифицировать пользователя, просто запустив этот php-скрипт в php-файле через localhost:
<?php echo exec('whoami');?>
Ниже приведен правильный пользователь с правом доступа к файлам для Drupal:
Возможно, вам придется изменить его, как только он будет отправлен обратно на сервер!
A. #LoadModule vhost_alias_module modules/mod_vhost_alias.so B. <Directory /> AllowOverride none Require all denied </Directory>
Заменить:
A. LoadModule vhost_alias_module modules/mod_vhost_alias.so B: <Directory /> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
От E: \ xamp ** apache \ conf / httpd.conf **