Php 文件只能由应用程序访问

Php 文件只能由应用程序访问,php,permissions,Php,Permissions,这可能是一个愚蠢的问题,但我不确定如何查找它。我有一个config.xml文件,其中包含一些不应公开的信息,因此如果我转到www.domain.com/config.xml,则该文件应受到保护,但我的web应用程序需要从该文件中读取 我已尝试将此文件的权限设置为“000”(基于linux),但我的脚本无法读取该文件。但是,当我将其设置为“600”时,每个人都可以访问此文件 你能告诉我正确的方向吗?我只需要将此文件对公共用户隐藏,但可以通过我的php脚本看到和访问。您可以将XML文件放在公用文件夹

这可能是一个愚蠢的问题,但我不确定如何查找它。我有一个config.xml文件,其中包含一些不应公开的信息,因此如果我转到www.domain.com/config.xml,则该文件应受到保护,但我的web应用程序需要从该文件中读取

我已尝试将此文件的权限设置为“000”(基于linux),但我的脚本无法读取该文件。但是,当我将其设置为“600”时,每个人都可以访问此文件


你能告诉我正确的方向吗?我只需要将此文件对公共用户隐藏,但可以通过我的php脚本看到和访问。

您可以将XML文件放在公用文件夹之外,您的应用程序仍然可以访问它,但外部世界无法访问它

例如,如果您的公共目录是/var/www/site/public\u html,请将您的XML文件放入/var/www/site/

EDIT1: 如果上述内容不符合您的需要,您可以使用htaccess:

<Files "config.xml">
  Order Allow,Deny
  Deny from all
</Files>

您可以使用.htaccess阻止人们直接打开文件。您可以对每个文件或所有xml等执行此操作。这似乎是合理的,我可以将此应用于特定文件夹中的所有文件吗?是的,或者应用于一类文件或多个文件。或者反过来说,只有你同意的答案,这肯定会有效,但我可能需要把它放在几个主机上,我不确定他们每个人是否都有一个“外部”文件夹可供我使用。根据你的评论编辑我的答案。谢谢,但不幸的是,它不起作用。我想可能是apache设置的问题。我发现您需要在apache配置中使用“AllowOverride All”,您认为这可能是问题所在吗?问题是我无法在主机上访问此类文件。^^是的,这是一个问题。我最终设法使其工作:)非常感谢,如果可以,我想问最后一个问题。这是隐藏文件的标准方式吗?我的意思是我可能会在整个目录中使用这个,但我有点担心不是所有的人质都会支持这个。
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !www.yoursite.com [NC]
RewriteRule \.(xml)$    -   [F,NC]