Php htaccess目录问题

Php htaccess目录问题,php,.htaccess,private,file-get-contents,Php,.htaccess,Private,File Get Contents,我试图保持文件夹的私有性,但允许html文件访问该文件中包含的内容 例如,私有文件夹中的.htaccess包含 订单拒绝,允许 拒绝所有人 允许从127.0.0.1开始 里面有一个名为“hidden.jpg”的图像 在私有文件夹之外,我想创建一个html文件,行为 不幸的是,我看不到图像。有没有更好的办法?我还尝试将文件放在web目录之外,并使用file_get_contents()抓取它,但这并不能正确抓取整个文件(HTML5视频播放器在播放以这种方式访问的.ogv文件时会中断) 非常感谢您

我试图保持文件夹的私有性,但允许html文件访问该文件中包含的内容

例如,私有文件夹中的.htaccess包含
订单拒绝,允许
拒绝所有人
允许从127.0.0.1开始

里面有一个名为“hidden.jpg”的图像

在私有文件夹之外,我想创建一个html文件,行为

不幸的是,我看不到图像。有没有更好的办法?我还尝试将文件放在web目录之外,并使用file_get_contents()抓取它,但这并不能正确抓取整个文件(HTML5视频播放器在播放以这种方式访问的.ogv文件时会中断)


非常感谢您的帮助。

您的帖子有点含糊不清,所以我会尽我所能回答

您必须记住HTACCESS是服务器端的。HTML请求(如IMG标记)是客户端的,这意味着获取图像标记是完全不同的HTTP请求。允许from
127.0.0.1
允许服务器打开它,但不允许任何客户端打开它(因为浏览器,除非在服务器上,总是另一个IP地址)

那里的HTACCESS代码只允许服务器访问映像(这是毫无意义的)。HTACCESS用于过滤/控制/编辑HTTP请求,这是浏览器所做的。实际上,您的HTACCESS配置不允许任何人查看映像

你想要完成的事情是不可能的;服务器不知道哪个请求来自哪个HTML文件,而且总会有办法欺骗该请求,让某人访问该图像


希望这有帮助

尝试通过HTML文档访问文件与直接访问文件相同。如果您不能直接访问它,您也将无法将其放入
标记中

.ogv文件有多大<如果文件太大,code>file\u get\u contents()将失败,因为它试图将整个文件读入内存。尝试
readfile()


但我仍然不确定你在这里想要实现什么。即使您使用一个简单的PHP脚本从web目录之外获取一个文件,任何知道该PHP脚本路径的人都可以轻松地获取该文件,就像它是公开可用的一样。这是不是在某种登录的背后?

老问题,但这可能会帮助某些人。如果将.htaccess文件添加到目录并将其放入其中:

Options -Indexes

它将允许您通过单个URL访问目录的内容,但不查看目录本身。

我不敢相信file\u get\u contents()无法获取所有文件内容,您可以使用readfile()而不是file\u get\u contents()readfile over file\u get\u contents()不是问题所在。问题是HTML5视频播放器无法播放动态服务的视频。如果相关,ogv文件是使用ffmpeg2theora-0.27从flv转换而来的。ogv大约为6MB,但我需要允许读取更大的.ogv文件。脚本在登录之后。基本上,登录的用户可以查看某个.ogv文件,但不能查看其他.ogv文件。此外,readfile()显示文件的十六进制,wheras file\u get\u contents显示视频。你知道为什么会发生这种情况,以及如何修复它吗?@user490895我明白了,如果所有这些都是在登录之后发生的,那就有意义了。使用
readfile()
与使用
file\u get\u contents()
有点不同。向下滚动到第一个示例。好的,我使用readfile()来显示视频,但这仍然不能解决问题。如果你想用它来播放视频,效果很好。不幸的是,我不知道如何保护私有目录。如果我使用readfile,HTML5播放器就会崩溃。是的,但是你知道有没有其他方法可以做到这一点,比如使用会话变量作为htaccess的有效用户凭据?我个人会拒绝htaccess中的所有人,并使用PHP动态地提供内容(因为PHP可以绕过htaccess限制,因为它直接使用文件). 使用fopen/fread进行二进制安全读取,并使用
标题(“内容类型:image/jpeg”)(用html/jpeg替换正确的mime类型)并动态回显内容,拒绝您不想访问该文件的用户访问(如果有意义的话)。通过PHP提供二进制数据有很多指南和代码(就像通过Blob和MySQL实现的一样)。希望这有帮助!是的,但问题是,每当我尝试动态交付视频时,HTML5播放器就会崩溃。我可以看到视频,但滚动条坏了。这听起来更像是编码问题,而不是PHP服务问题。我建议(如果你知道怎么做,而且你有Linux),让Apache提供文件并保存它,然后让你的PHP脚本提供文件并保存它,然后对它们使用
diff
,看看是否有区别。(不应该有)。