使用服务器路径而不是 URL 访问文件


Access files using server path not URL

我有2个问题。

  1. 我目前正在运行 XAMP,我想禁止人们在/htdocs/db/resource/data 中打开.xml文件。我相信这是一个.htaccess解决方案。

  2. 我还想从我的 PHP 中获取那些.xml文件。由于我不能使用 URL 文件路径,我尝试只使用"资源/数据/文件名.xml",但它似乎不起作用。我想我在这里错过了一些东西。

  3. 只是补充一下,如果考虑到这一点。我正在使用CI,它安装在我的XAMPP的htdocs/db/中。我可以通过 url 访问.xml,但我想通过服务器中的文件路径访问它。

  1. 是的,Apache配置将支持此功能

    # /htdocs/db/resource/data/.htaccess
    <FilesMatch "'.xml$">
        Order allow,deny
        Deny from all
    </FilesMatch>
    
  2. 应该工作,例如

    // /htdocs/db/some-file.php
    $xml = simplexml_load_file(__DIR__ . '/resource/data/filename.xml');
    

为主文件中的根目录定义一个常量,即索引.php

喜欢这个

if(!defined('SITEPATH')){
   define('SITEPATH',dirname(__FILE__).'/');
}

现在,您可以像使用 URL 的 R 一样使用它来获取任何文件。

享受

编辑:

<?php
$xmls = array(
                'customxml_name1' => 'RelativePath1',
                'customxml_name2' => 'RelativePath2',
            );
if(isset($_GET['data'])&&!empty($_GET['data'])){
    echo file_get_contents(dirname(__FILE__).'/'.$xmls[$_GET['data']]);
}
?>

将此脚本放在根文件夹中。 使用自定义名称将路径添加到 XML,然后调用带有 get parameter => data 的脚本 URL 作为 XML 的customxml_name

享受:)