file_get_contents 与流明
file_get_contents with Lumen
我将此代码放入一个函数中 (php class) :
$theFile = '/test/test.xml'; // these are in the public folder
dd(file_get_contents($theFile));
如果我转到 mydomain.local/test/test.xml
,我会得到有效的 xml 代码。
但是对于 file_get_contents
,我得到这个错误:
file_get_contents(/test/test.xml): failed to open stream: No such file or directory
如何解决这个问题?
您正在传递相对于服务器基目录的函数的绝对路径。这与URL 的基本目录没有必要相同。尝试传递相对于当前执行脚本的路径。
Lumen 没有您可能在 Laravel 中熟悉的 public_path()
来轻松获取 public 文件的路径。
重新实现它的最简单方法是将一个名为 irazasyed/larasupport 的包添加到您的项目中,该包添加了各种缺失的助手(包括 public_path()
)以及添加供应商发布命令Lumen 中缺少。
或者,如果您不想添加第三方包,只需在您的应用程序目录中创建一个名为 helpers.php
的文件,然后在您的 composer.json
文件中添加以下内容 "autoload" 部分和 运行 composer dump-autoload
刷新自动加载器缓存:
"files": [
"app/helpers.php"
],
然后在helpers.php
内添加以下内容:
<?php
if (!function_exists('public_path')) {
/**
* Get the path to the public folder.
*
* @param string $path
* @return string
*/
function public_path($path = '')
{
return env('PUBLIC_PATH', base_path('public')) . ($path ? '/' . $path : $path);
}
}
我将此代码放入一个函数中 (php class) :
$theFile = '/test/test.xml'; // these are in the public folder
dd(file_get_contents($theFile));
如果我转到 mydomain.local/test/test.xml
,我会得到有效的 xml 代码。
但是对于 file_get_contents
,我得到这个错误:
file_get_contents(/test/test.xml): failed to open stream: No such file or directory
如何解决这个问题?
您正在传递相对于服务器基目录的函数的绝对路径。这与URL 的基本目录没有必要相同。尝试传递相对于当前执行脚本的路径。
Lumen 没有您可能在 Laravel 中熟悉的 public_path()
来轻松获取 public 文件的路径。
重新实现它的最简单方法是将一个名为 irazasyed/larasupport 的包添加到您的项目中,该包添加了各种缺失的助手(包括 public_path()
)以及添加供应商发布命令Lumen 中缺少。
或者,如果您不想添加第三方包,只需在您的应用程序目录中创建一个名为 helpers.php
的文件,然后在您的 composer.json
文件中添加以下内容 "autoload" 部分和 运行 composer dump-autoload
刷新自动加载器缓存:
"files": [
"app/helpers.php"
],
然后在helpers.php
内添加以下内容:
<?php
if (!function_exists('public_path')) {
/**
* Get the path to the public folder.
*
* @param string $path
* @return string
*/
function public_path($path = '')
{
return env('PUBLIC_PATH', base_path('public')) . ($path ? '/' . $path : $path);
}
}