public_path()
在生产中对我不起作用,但在本地环境中有效。其他路径功能(应用,基本和存储)正常工作。
答案 0 :(得分:1)
在Illuminate \ Foundation \ Application.php中,您将找到:
/**
* Get the path to the public / web directory.
*
* @return string
*/
public function publicPath()
{
return $this->basePath.DIRECTORY_SEPARATOR.'public';
}
}
basePath返回时,Laravel安装的基本路径...。
有时此路径无法按您的意愿使用,因此您必须将其覆盖... 请记住,您不能更改此类代码,因为它超出了您的项目代码... 您可以根据laravel的版本进行选择:
1-调整bootstrap / paths.php中的路径值
'public' => __DIR__.'/../public'
请参阅:
https://stackoverflow.com/a/27271590/10573560
2-您可以使用ioc容器覆盖公共路径:
App::bind('path.public', function() {
return base_path().'/public_html';
});
在laracast的讨论中有一些很好的建议,其中包含非常好的想法
答案 1 :(得分:0)
有时此文件夹称为public_html
。典型的用户public html
路径的示例是/home/user/public_html
。
因此,这些是您需要更改的四个最重要的文件,以便在自定义公用文件夹中运行应用程序:
./ server.php
该文件在根文件夹中。调用php artisan serve命令时,由本地PHP开发服务器使用。它具有公用文件夹的硬编码值。将此值更改为您的自定义路径(例如:public_html
)。
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
return false;
}
require_once __DIR__.'/public/index.php';
./ app / AppServiceProvider.php
在此文件中,您可以注册并启动该应用程序的某些服务提供商。有一个名为register()
的函数。通常,此部分默认情况下为空。您需要添加额外的代码来定义自定义应用程序路径。
public function register()
{
$this->app->bind('path.public', function() {
return base_path().'/public_html';
});
}
./ config / filesystems.php
该文件定义了一些重要的文件系统位置,云文件系统的使用以及其他与文件相关的配置。修改public
部分,将root
值app/public
更改为所需的位置,例如app/public_html
(app
是别名您的根文件夹)。
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
./ webpack.mix.js
(可选)某些Laravel安装程序使用Laravel Mix插件模块来使用Webpack npm插件生成javascript,css和其他前端文件的统一版本和最小版本。这些文件安装在公用文件夹中(例如./public/js
和./public/css/
)。添加一行以更改默认的公用路径(mix.config.publicPath
),然后在Laravel混合配置中将公用文件夹更改为所需的 public 文件夹名称。
mix.config.publicPath='public_html';
mix.js('resources/assets/js/app.js', 'public_html/js')
.sass('resources/assets/sass/app.scss', 'public_html/css');
移动公用文件夹
将公用文件夹移动到另一个文件夹的最简单方法是使用move(mv
)命令。之后,您的公用文件夹将立即重命名。
mv public public_html