Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess/.htpasswd 500内部服务器错误_Apache_.htaccess - Fatal编程技术网

Apache .htaccess/.htpasswd 500内部服务器错误

Apache .htaccess/.htpasswd 500内部服务器错误,apache,.htaccess,Apache,.htaccess,我正在使用.htaccess阻止一个文件夹,这是我以前从未使用过的,我遇到了一些问题。这是我的 .htaccess(位于要阻止的文件夹中): .htpasswd(位于根目录下,密码在实际文件中加密): 我收到了500个内部服务器错误,我不知道为什么 最可能的问题是这一行: AuthUserFile /.htpasswd 此行应提供密码文件的完整文件系统路径,例如 AuthUserFile /var/www/.htpasswd 要发现文件系统路径,可以创建一个包含 echo$\u服务器['

我正在使用.htaccess阻止一个文件夹,这是我以前从未使用过的,我遇到了一些问题。这是我的

.htaccess(位于要阻止的文件夹中):

.htpasswd(位于根目录下,密码在实际文件中加密):


我收到了500个内部服务器错误,我不知道为什么

最可能的问题是这一行:

AuthUserFile /.htpasswd 
此行应提供密码文件的完整文件系统路径,例如

AuthUserFile /var/www/.htpasswd 
要发现文件系统路径,可以创建一个包含


echo$\u服务器['DOCUMENT\u ROOT']

权限也可能导致此问题

确保web服务器用户可读
.htpasswd

例如,如果您使用nginx,请检查
nginx.conf
以了解服务器用户是什么,如果您使用Apache,则可以找到它,等等


然后将正确的所有者和读取权限设置为
.htpasswd

,如果没有任何帮助,并且您正在使用PHP,您可以通过将其放在index.PHP(顶部)中使其正常工作:


我还想补充一点,在某些Web主机上,.htpasswd文件如果放在可公开访问的区域中,将无法工作。我最近的一次安装证实了这一点。正如其他人所指出的,最好将其放在站点的根目录中。

也有同样的问题,它与访问有关!您是否已通过将密码文件的所有权授予
www-data
用户

chown www-data /var/www/.htpasswd
chmod 640 /var/www/.htpasswd

??出于明显的原因,最好保留密码,将密码保留在
/var/www/
目录之外的某个地方,比如
/home/MYSERVER/
。在这种情况下,您还需要将此父目录的所有权授予用户
www data

如果您最近看到
500内部服务器错误
,这主要是因为在较新的Apache版本中,
AuthUserFile
中的路径必须放在
引号内

AuthUserFile "/var/www/somewhere/.htpasswd"

对您来说,什么是
/.htpasswd
,是
/home/youraccout/public\u html
中的一个文件,或者实际上位于文件系统的主目录中
/
?您的apache错误日志说明了什么?我无法通过主机访问错误日志=(并且我的.htpasswd文件位于我可以访问的最上面的文件夹中,它不在我的公共html文件夹中。还要确保
.htpasswd
不可由组和其他人写入。找到了主路径。我的主机对我隐藏了基本信息。谢谢。谢谢!在我的情况下
echo getcwd();
得到了(错误)相对路径。
echo$\u服务器['DOCUMENT\u ROOT']
工作得很好!好了,伙计们,这很有效:我打开了auth窗口并登录,但随后出现了内部服务器错误。所以我使用了绝对路径,解决了。但是,作为记录,这太糟糕了!我不能再将此文件放入
git
repo中,因为我不能使用相对路径。谢谢奥巴马,谢谢特朗普!(放松点,有点政治幽默:)内部服务器错误问题通过使用回送功能和设置文件路径来解决。它很有效!…最好将其放在网站的根目录中”-您的最后一句话似乎与您的第一句话相矛盾(假设“根目录”指的是文档根目录)?正如您所建议的,理想情况下,此文件应位于可公开访问的区域之外。例如,在文档根目录之上。对我来说很好
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
    if ($_SERVER['PHP_AUTH_USER'] != 'user' || 
        $_SERVER['PHP_AUTH_PW'] != 'pass') {

        header('WWW-Authenticate: Basic realm="Protected area"');
        header('HTTP/1.0 401 Unauthorized');

        die('Login failed!');
    }
}
chown www-data /var/www/.htpasswd
chmod 640 /var/www/.htpasswd
AuthUserFile "/var/www/somewhere/.htpasswd"