密码使用Apache2或PHP独立地保护单个PHP文件不受任何其他内容影响

密码使用Apache2或PHP独立地保护单个PHP文件不受任何其他内容影响,php,apache,.htaccess,apache2,.htpasswd,Php,Apache,.htaccess,Apache2,.htpasswd,亲爱的各位, 在文件夹images中,我想用密码保护一个php文件render.php 我的.htaccess和.htpasswd文件已经在该文件夹中,但是它们不起作用 .htaccess在文件夹/图像中 // does not work ?? <Files render.php> AuthName "Login" AuthType Basic AuthUserFile /var/www/vhosts/site.com/httpdocs/images/.htpasswd

亲爱的各位, 在文件夹
images
中,我想用密码保护一个php文件
render.php
我的.htaccess和.htpasswd文件已经在该文件夹中,但是它们不起作用

.htaccess在文件夹/图像中

// does not work ??
<Files render.php>
  AuthName "Login"
  AuthType Basic
  AuthUserFile /var/www/vhosts/site.com/httpdocs/images/.htpasswd
  require valid-user
</FilesMatch>
一旦我在该文件夹的htaccess中设置了规则,该文件夹中的所有内容似乎都得到了奇怪的处理,该文件夹中的css文件被破坏等等。为什么这不起作用

PS我也很好(事实上,如果可能的话,我更愿意)在php文件本身中使用密码设置,这样我就可以确保除了php文件之外,没有什么会受到影响,不管它的名称或位置如何(可能更优雅,时间也更长),尽管我看到每个人都在使用htaccess,所以肯定有优势,对吧?


非常感谢你的建议

您可以在PHP中执行此身份验证:


您可以在PHP中执行此身份验证:


您以
开始,但以
结束。我很惊讶这不是500美元errors@Phil布朗:我猜这就是正在发生的事情,他说的“损坏”是指不在页面中加载……您是否启用了相应的覆盖以允许.htaccess文件中的auth指令?您至少需要
AllowOverride AuthConfig
@Phil@Jacob@Marc感谢大家的评论!这三个都是真的。我应该使用
文件
还是
文件匹配
?在顶部和底部标记中匹配我选择的单个php文件?谢谢我也对下面唯一的“答案”做出了反应,因为我也喜欢这个答案(尽管这个解决方案还不起作用),这是我这个月最幸运的编码日!我只使用文件,但我不完全确定Auth模块指令在那里是否有效。您以
打开,但以
关闭。我很惊讶这不是500美元errors@Phil布朗:我猜这就是正在发生的事情,他说的“损坏”是指不在页面中加载……您是否启用了相应的覆盖以允许.htaccess文件中的auth指令?您至少需要
AllowOverride AuthConfig
@Phil@Jacob@Marc感谢大家的评论!这三个都是真的。我应该使用
文件
还是
文件匹配
?在顶部和底部标记中匹配我选择的单个php文件?谢谢我也对下面唯一的“答案”做出了反应,因为我也喜欢这个答案(尽管这个解决方案还不起作用),这是我这个月最幸运的编码日!我只使用文件,虽然我不完全确定Auth模块指令在那里是否有效。+1谢谢@Long Ears,我想这才是我真正需要的!当我把这段代码放在我的php文件的顶部时,它确实会在弹出屏幕上很好地询问密码。但是,当我键入
admin
foobar
作为登录凭据时,相同的登录屏幕返回空字段,并要求我再次键入登录/密码。经过三次orso测试,它显示未经授权。。。。有什么猜测吗??谢谢:非常感谢appreciated@Sam如果您让PHP通过CGI运行,而不是作为Apache模块运行,那么这将无法单独工作,这里有一个修复方案,+1感谢@Long Ears,我认为这才是我真正需要的!当我把这段代码放在我的php文件的顶部时,它确实会在弹出屏幕上很好地询问密码。但是,当我键入
admin
foobar
作为登录凭据时,相同的登录屏幕返回空字段,并要求我再次键入登录/密码。经过三次orso测试,它显示未经授权。。。。有什么猜测吗??谢谢:非常感谢appreciated@Sam如果PHP通过CGI运行,而不是作为Apache模块运行,那么这将无法单独工作,这里有一个修复方案,
admin:818jp2uNLY6ZW     
# generated with http://www.4webhelp.net/us/password.php
<?php
if (!isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER'] != 'admin' || $_SERVER['PHP_AUTH_PW'] != 'foobar') {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Unauthorized';
    exit;
}