将 public 文件夹移到项目 laravel 之外

问题描述 投票:0回答:2

我想将

public
文件夹移到我的 Laravel 项目之外

-->|-Project
   |  |___app
   |  |___bootstrap
   |  |___....
   |-public

我移动了目录文件夹然后出现错误说

   Symfony\Component\Process\Exception\RuntimeException 

  The provided cwd "C:\xampp\htdocs\site\ProjectNamexx\public" does not exist.

所以我创建了一个名为 public 的空文件夹,只是为了绕过错误;

bootstrap
目录中,我指定了该文件夹
public
,该文件夹现在通过此
dirname(getcwd(), 1)
成为父文件夹,旧代码是
dirname(__DIR__)

$app = new Illuminate\Foundation\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
$app->usePublicPath($app->basePath("public"));

但是发生了错误:

In RecursiveDirectoryIterator.php line 43:

  RecursiveDirectoryIterator::__construct(): Argument #1 ($directory) cannot be empty  

我尝试通过硬编码网址来解决它,但效果不佳,如果您已经遇到此问题,或者您知道如何解决此问题,我感谢您的帮助!

php laravel symfony directory
2个回答
0
投票
  1. 编辑
    public/index.php
require __DIR__.'/../Project/vendor/autoload.php';

if (file_exists($maintenance = __DIR__.'/../Project/storage/framework/maintenance.php')) {
    require $maintenance;
}

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

  1. 编辑
    bootstrap/app.php
    。在 return $app 之前添加;
$app->bind('path.public', function () {
    return base_path() . '/../public';
});
  1. 创建
    Project/.htaccess
    。如果您是虚拟主机
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

0
投票

你可以试试这个

我假设

public_html
是您网站的根文件夹

在其中创建一个文件夹

project
&
public

打开文件

public/index.php
并更改全部:

__DIR__.'/../

致:

__DIR__.'/../project/
© www.soinside.com 2019 - 2024. All rights reserved.