【问题标题】:Upload Laravel 5 to server subfolder将 Laravel 5 上传到服务器子文件夹
【发布时间】:2016-05-29 10:19:10
【问题描述】:

我正在尝试将 Laravel 5 项目上传到子文件夹:

public_html/project/

我在index.php里改了

require __DIR__.'/../project/bootstrap/autoload.php';
$app = require_once __DIR__.'/../project/bootstrap/app.php';

在 config/app.php 中

'url' => 'http://example.com/project',

当我尝试 url 为: http://example.com/project/public 它被定向到 http://example.com/public

上传到服务器的方法是什么。任何人都可以帮助我,因为我尝试了很多选项。

【问题讨论】:

  • 将您的项目根目录更改为public_html/project/public。您无需更改任何其他内容。

标签: laravel upload server subdirectory


【解决方案1】:

问题已解决:-

转到 laravelFolder/bootstrap/cache 然后重命名 config.php 例如。 config.php_old 并重新加载您的网站。

【讨论】:

    【解决方案2】:

    我确实喜欢这个。 (我的版本是 laravel 5.2)

    1. 将 server.php 文件的名称更改为“index.php”。
    2. 将 .htaccess 文件从公用文件夹复制到主目录(已创建子文件夹)
    3. RewriteEngine On 之后的 .htaccess 中,我们必须添加 RewriteBase /yoursubfolder/

    【讨论】:

      【解决方案3】:

      将整个 laravel 项目上传到 public_html (public) 文件夹不是一个好主意。公用文件夹中的文件具有不受限制的访问权限。

      如果您因为想上传到共享主机而被限制考虑将 laravel 项目上传到 public_html 文件夹,那么没有必要这样做。
      试试这个:
      1. 在 public_html 文件夹的同一级别上创建一个名为 laravel(或任何你喜欢的东西)的文件夹。

      Eg:  
      /
       |--var  
          |---www
              |----laravel
              |----public_html  
      

      2。从您的 laravel 项目中的 laravel 文件夹(在服务器主机上)中复制除 public 文件夹之外的所有内容。
      3. 打开你的 laravel 项目的 public 文件夹,复制所有内容并粘贴到 public_html 文件夹中(在服务器主机上)
      4.现在打开public_html文件夹中的index.php文件,然后:

      Change:  
      require __DIR__.'/../bootstrap/autoload.php';  
      To:  
      requrie require __DIR__.'/../laravel/bootstrap/autoload.php';  
      And  
      Change: 
      $app = require_once __DIR__.'/../bootstrap/app.php';  
      To:  
      $app = require_once __DIR__.'/../laravel/bootstrap/app.php';  
      Save and close.  
      

      5。现在转到laravel 文件夹并打开server.php 文件

      Change:  
      require_once __DIR__.'/public/index.php';  
      To:  
      require_once __DIR__.'../public_html/index.php'; 
      Save and close. 
      

      现在,当您使用服务器访问配置为域的 url 时,您的 laravel 应用程序应该可以像在 localhost 上一样工作。

      注意:config/app 中的 'url'=>'someurl' 由 artisan 即 cli 使用,它对您的网络服务器 URL 没有任何影响。
      希望能帮助到你。

      编辑
      完成上述操作后,如果您在尝试访问 url 时出现空白页面,请递归设置存储文件夹的写入权限。即存储中的所有文件夹及其子文件夹应具有权限 775 为网络服务器所有者和组设置有写权限。

      如果您不打算在存储文件夹中存储任何敏感信息,您还可以将权限设置为777,以授予对存储文件夹的所有读取、写入和执行权限。

      注意 linux 中的文件权限,它们就像一把双刃剑,如果使用不当,可能会使您的应用容易受到攻击。要了解 Linux 文件权限,您可以阅读 this

      【讨论】:

      • 谢谢。我按照你说的做了,但现在我得到一个空白页。我已授予对存储、供应商和引导程序>缓存的读/写访问权限。会有什么错误。
      • 这通常是由于缺少对存储的写入权限而发生的。请确保 storage 文件夹中的每个文件夹及其所有子文件夹都具有 webserver 组或用户的写入权限。有时很容易忘记递归地设置写权限,即存储文件夹本身具有写权限,但其子文件夹没有写权限。核实。另外,如果您使用 devtools,它会显示任何错误吗?
      • 这对我有用。但是我使用的是 Laravel 5.5.13,但我没有意识到,但我必须将 (1) PHP 设置为 >= 7.0 && (2) 确保授予 MySQL 数据库用户对数据库的权限 && (3) 确保进行手动 php 迁移(从本地导出并导入到远程)。谢天谢地,我不必将权限设置为 777。
      • 我还在.env 文件中更改了DB_HOSTDB_DATABASEDB_USERNAMEDB_PASSWORD。然后从 cPanel,创建数据库,创建用户,然后重要的是,将用户添加到具有我给它“所有权限”的权限的数据库中。
      【解决方案4】:

      完成上述步骤后。请检查几个 folcers 的读/写权限(即应该是 777):

      存储、供应商和引导程序>缓存

      检查 .htaccess 文件是否在 public_html 文件夹中或从 public 文件夹中复制。

      最后检查php的版本应该高于5.5

      它对我有用。干杯!!

      【讨论】:

        猜你喜欢
        • 2016-12-31
        • 1970-01-01
        • 1970-01-01
        • 2011-10-28
        • 2016-05-26
        • 2015-02-27
        • 2020-09-03
        • 1970-01-01
        • 2016-03-20
        相关资源
        最近更新 更多