PHP glob函数读取图片路径无返回 同路径其他文件运行正常
排查方向与解决方法
1. 优先排查当前工作目录差异
这是同目录文件调用相同逻辑结果不一致的最常见原因:
相对路径是基于PHP运行时的当前工作目录解析,而非脚本文件本身所在目录。如果upload-files.php是被其他上层文件引入、或者通过URL重写规则路由访问,它的运行时工作目录会和直接访问的abc.php不同。
验证方法:在两个文件中都加入以下代码,对比输出结果:
var_dump(getcwd());
如果输出不一致,直接用脚本所在目录常量__DIR__拼接绝对路径即可解决:
$onlyImages = glob(__DIR__ . "/datasets/777/*.{png,jpeg,jpg,bmp}", GLOB_BRACE);
2. 检查命名空间冲突
如果upload-files.php文件开头有namespace xxx;的命名空间声明,直接调用glob()会优先匹配当前命名空间下的自定义同名函数,而非PHP内置的全局glob函数。
解决方法:调用时加反斜杠前缀指定调用全局函数:
$onlyImages = \glob(__DIR__ . "/datasets/777/*.{png,jpeg,jpg,bmp}", GLOB_BRACE);
3. 排除参数兼容问题
可以先去掉GLOB_BRACE参数测试单后缀匹配是否正常,排除当前运行环境下该参数生效异常的问题:
// 先测试单后缀能否正常读取 var_dump(glob(__DIR__ . "/datasets/777/*.png"));
4. 查看详细错误提示
在upload-files.php头部开启错误显示,运行后查看是否有路径权限、open_basedir限制类的警告:
error_reporting(E_ALL); ini_set('display_errors', 1);
内容的提问来源于stack exchange,提问作者Wtow
相关产品推荐
相关产品推荐

