为Symfony项目自定义Laravel Valet驱动时遇文件加载错误求助
问题原因
- 自定义Valet驱动未设置当前工作目录为项目的
public目录,导致PHP执行时的相对路径基准错误。 - Symfony的
public/index.php通过dirname(__DIR__)定位项目根目录,该写法依赖当前工作目录为public。Laravel默认驱动会自动切换到public目录,但你继承后覆盖了frontControllerPath方法,却未保留切换工作目录的逻辑,导致路径计算出错。 - Valet自身
server.php中的相对路径./cli/includes/require-drivers.php也会因工作目录不正确而无法找到文件。
解决办法
修改自定义驱动的frontControllerPath方法,在返回前端控制器路径前切换到项目的public目录:
public function frontControllerPath(string $sitePath, string $siteName, string $uri): string { // 切换到项目public目录,修正相对路径基准 chdir($sitePath.'/public'); return $sitePath.'/public/index.php'; }
修改完成后,Symfony的dirname(__DIR__)将正确指向项目根目录,vendor/autoload_runtime.php可正常加载,Valet的依赖文件也能被找到,站点即可恢复正常访问。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

