如何将 public 文件夹更改为 laravel 8 中的 public_html?

How to change public folder to public_html in laravel 8?

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

您必须按照 2 个步骤将应用程序的 public 文件夹更改为 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';
     });
    
  2. 打开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 为您的应用程序提供服务,您也可以将其部署在主文档根 public_html

所在的 Cpanel 共享主机上

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

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

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

只需将“public”文件夹重命名为“public_html”即可。 代码中不需要更改。在 Laravel 8.

中测试

好了,idk 如果你和我有同样的问题,我的情况是我使用共享主机,我将它部署在我的主域中。我把我所有的文件都放在根目录下,我的问题是 storage:link 保持在 public 之间,而不是 public_html (因为它是托管的默认值)所以我需要做的是改变 link 使用此代码:

之前:

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

之后:

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

希望能帮到少数人:)