如何在laravel 8中将公共文件夹更改为public_html?

lbsnaicq  于 2023-02-05  发布在  其他
关注(0)|答案(5)|浏览(128)

我想在Cpanel上的共享主机上部署应用程序,其中主文档根目录为public_html,但Laravel项目为public

dnph8jn4

dnph8jn41#

您必须按照2个步骤将应用程序的公共文件夹更改为public_html,然后才能部署它或执行任何操作:)

1.编辑\App\Providers\AppServiceProvider register()方法并添加此代码。

// set the public path to this directory
 $this->app->bind('path.public', function() {
     return base_path().'/public_html';
 });

1.打开server.php,您可以看到以下代码

if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
   return false;
}

require_once __DIR__.'/public/index.php';

只需将其替换为:

if ($uri !== '/' && file_exists(__DIR__.'/public_html'.$uri)) {
   return false;
  }

  require_once __DIR__.'/public_html/index.php';

然后用php artisan serve服务您的应用程序,您也可以将其部署在Cpanel共享主机上,其中主文档根public_html

wixjitnu

wixjitnu2#

你可以将你的公共目录rename到你想要的任何地方,并告诉Laravel使用当前的目录路径作为公共路径,只需导航到public文件夹中的index.php(或者你将它重命名为的任何地方),并在$app定义之后添加以下代码:

$app = require_once __DIR__.'/../bootstrap/app.php';

/* *** Add this code: *** */
$app->bind('path.public', function() {
    return __DIR__;
});
/* ********************** */
agyaoht7

agyaoht73#

在那里,idk如果你有同样的问题像我一样,我的情况是我使用共享主机,我部署在我的主域.我把我所有的文件在根,我的问题是存储:公共之间的链接保持,而不是public_html(因为它的默认主机)所以我需要做的是我使用以下代码改变链接:
之前:

'links' => [
        public_path('storage') => storage_path('app/public'),
    ],

之后:

'links' => [
    app()->basePath('public_html/storage') => storage_path('app/public'),
],

我希望它能帮助很少的人:)

llew8vvj

llew8vvj4#

只需将“public”文件夹重命名为“public_html”,它就可以工作了。不需要对代码进行任何更改。在Laravel 8中测试。

ccrfmcuu

ccrfmcuu5#

我的两分钱:)对我有帮助的是:
打开LaravelService/vendor/laravel/framework/src/Illuminate/Foundation/Application.php并更改publicPath()方法以返回public_html。

public function publicPath()
{
    return $this->basePath.DIRECTORY_SEPARATOR.'public_html';
}

然后,如果您使用webpack,还应更改输出文件夹:

const output = 'public_html';

mix.ts('resources/js/web/App.ts', output + '/js/web').setPublicPath(output).react();

这对我很有帮助。唯一的问题是,它可能不建议改变Application.php,因为它是Laravel框架的一部分,更新后,它可能会被删除,所以你必须把它放回去。

相关问题