Symfony4如何调用public目录下文件 读取yaml提示文件不存在怎么解决
问题解决方法
报错原因
你传入的是相对路径,PHP解析相对路径时默认基于当前脚本的工作目录,而非你编写代码的文件所在位置,因此会出现路径匹配失败找不到文件的问题。同时你使用了Windows系统的反斜杠\作为路径分隔符,在Linux服务器上运行时也会出现路径识别异常。
解决方法
方法1:Laravel框架适用
直接用Laravel提供的public_path()辅助函数生成public目录的绝对路径,路径分隔符统一用斜杠/:
$value = Yaml::parseFile(public_path('assets/organizations.yaml')); return $value;
方法2:原生PHP/其他框架适用
用$_SERVER['DOCUMENT_ROOT']拼接生成public目录的绝对路径:
$filePath = $_SERVER['DOCUMENT_ROOT'] . '/assets/organizations.yaml'; $value = Yaml::parseFile($filePath); return $value;
额外排查项
- 确认
public/assets/organizations.yaml文件真实存在,注意大小写拼写,Linux系统对文件名大小写敏感 - 确认Web服务运行用户对该yaml文件拥有可读权限
内容的提问来源于stack exchange,提问作者Ygg69
相关产品推荐
相关产品推荐

