【问题标题】:Searching for file in directory using glob, not returning results使用 glob 在目录中搜索文件,不返回结果
【发布时间】:2018-01-31 17:08:36
【问题描述】:

我正在尝试使用 php glob 制作一个小脚本,用于检索包含产品导入映射指令的配置文件。但我失败得很惨。

我现在拥有的:

echo "Shop type: " . $this->shopType . '<br />';
echo "Shop version: " . $this->shopVersion . '<br />';
echo "Glob search: config/mappings/" . $this->shopType . "_" . $this->shopVersion . ".php";

foreach (glob("config/mappings/" . $this->shopType . "_" . $this->shopVersion . ".php") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
}
exit;

$this-&gt;shopType 代表应导入导出文件的店铺名称。例如。 ccvshop.
$this-&gt;shopVersion代表店铺的版本,可以为不同版本的店铺类型编写不同的导入映射。

shopType 的值 = ccvshop.
shopVersion 的值 = 11.2

这将使 glob 函数中的搜索字符串: config/mappings/ccvshop_11.2.php.

不幸的是,我的结果是空的,我看不到我做错了什么。

任何帮助将不胜感激。

我添加了一个代表我的目录结构的图像:

【问题讨论】:

    标签: php file-get-contents glob


    【解决方案1】:

    glob() 返回匹配文件的数组。看起来您已经知道要读取的文件的名称。试试这样的:

    $filename = "config/mappings/" . $this->shopType . "_" . $this->shopVersion . ".php";
    if (file_exists($filename))
        echo "$filename:" . filesize($filename);
    

    【讨论】:

    • 我尝试了您的解决方案,它有效。但我必须添加 $_SERVER['DOCUMENT_ROOT'] 。文件名前的“/../”。您是否知道从实际根目录搜索的任何方法。不是apache中设置的公共文件目录?我真的不擅长 PHP 中的文件编辑和搜索。老实说,从来没有真正做过很多事情。
    • 我找到了答案。我忘了提到我正在使用 Laravel。 Laravel 有为此目的的辅助函数。我使用 base_path() 函数来获取项目根目录。非常感谢您的帮助!
    • 错过了您的回复。很高兴你找到了答案!另一个要记住的是 __DIR__ 魔术常量,它将填充运行脚本的目录。
    猜你喜欢
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多