私はWindowsユーザーです。私はかなり長い間xamppを使用していますが、突然.phpファイルが動作しなくなりました!このエラーメッセージが表示されます。
アクセス禁止!
要求されたオブジェクトにアクセスする権限がありません。サーバーによって読み取り保護されているか、読み取り可能ではありません。
これがサーバーエラーだと思われる場合は、ウェブマスターにお問い合わせください。
エラー403
localhost Apache/2.4.4(Win32)OpenSSL/0.9.8y PHP/5.4.16
Localhost/Practiceで.phpファイルのリストを確認できます(Practiceはファイルを保存したフォルダーです)。クリックするとファイルが開きます。しかし、ファイル内の「送信」ボタンをクリックすると、このエラーが発生します。助けてください! xamppを1.8.1から1.8.2に更新しましたが、それでも同じ問題が解決しません!
以下のこのコードを試して、仮想ホスト構成に追加してください。次の行をhttpd-vhosts.conf
ファイルに追加します。
<Directory "c:/<path-to-projects>/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Allow from all
Require all granted
</Directory>
この方法で同じ問題を修正しました。それが役に立てば幸い。
ubuntuのオペレーティングシステムを使用している場合は、/ Practiceフォルダのchmodをチェックして、読み取り/書き込み許可を変更します
ターミナルを押してショートカットキー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
これを解決する方法は、最初にエラーログを正しくセットアップすることでした。
<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>
このエラーが「D:/ websites/test/logs /」にログインした後、ログフォルダーを自分で作成してください。エラーログに記録された正確なエラーは
AH01630:サーバー構成によりクライアントが拒否されました:
このリンク を使用して解決策を修正するように指示しました
Require all granted
必要とされている。上の私のサンプルサンプルコードは、ところで問題を修正します。
私はubuntu 16.04を使用してxamppを使用しています-それは私のためにうまく機能しています
<VirtualHost *:80>
DocumentRoot "/opt/lampp/htdocs/"
ServerAdmin localhost
<Directory "/opt/lampp/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Xamppフォルダー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=ZUAKLUZa-A 。
Htdocsフォルダーをxamppフォルダーの外に移動すると、この問題が発生しました。これを行う場合、httpd.confのドキュメントルートを変更する必要があります。 https://stackoverflow.com/a/1414/3543329 を参照してください。
私にとって、それは次のように即座に解決されました
cont + fで次の行を見つけます。
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
AllowOverride AuthConfig
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
ローカルのみを変更---->すべて許可されるため、このようになります
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
AllowOverride AuthConfig
Require all granted
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
この後、localhostはエラーの表示を停止し、管理パネルを表示します。私はこのソリューションをビデオで見つけました: https://www.youtube.com/watch?v=MvYyEPaNNhE
同じ問題がありました。だから私は覚えていた。昨日、htttp-xampp.confでこのコードをコメントしました
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
# AllowOverride AuthConfig
# Require local
# ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
だから、ローカルホストをローカルに要求するので、同じネットワーク上の他のシステム(LAN/WIFI)を使用してローカルホストにアクセスできます。
だから私はそれを次のようにします
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
AllowOverride AuthConfig
# Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
そして今、私のローカルマシンで動作し、ローカルホストは同じLAN/WIFI上の他のシステムを使用してアクセスできます。
私の場合、DrupalインスタンスをサーバーからXAMPPのlocalhostにエクスポートしました。それは明らかにファイルとディレクトリの所有権を正当化せず、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を実行しているユーザーは「デーモン」です。 localhostを介してphpファイルでこのphpスクリプトを実行するだけで、ユーザーを識別できます。
<?php echo exec('whoami');?>
以下は、Drupalの適切なファイル権限を持つ適切なユーザーです。
サーバーに戻された後、元に戻す必要があるかもしれません!
動作を停止する前に、仮想ホスト上の何かを変更しましたか?
この行を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>
次と置換:
A. LoadModule vhost_alias_module modules/mod_vhost_alias.so
B:
<Directory />
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
FromE:\ xamp ** Apache\conf/httpd.conf **