将 Laravel 5 上传到服务器子文件夹

Posted

技术标签:

【中文标题】将 Laravel 5 上传到服务器子文件夹【英文标题】:Upload Laravel 5 to server subfolder 【发布时间】: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。您无需更改任何其他内容。 【参考方案1】:

问题已解决:-

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

【讨论】:

【参考方案2】:

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

    将 server.php 文件的名称更改为“index.php”。 将 .htaccess 文件从公用文件夹复制到主目录(已创建子文件夹) 在 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

它对我有用。干杯!!

【讨论】:

以上是关于将 Laravel 5 上传到服务器子文件夹的主要内容,如果未能解决你的问题,请参考以下文章

laravel rest api将文件上传到服务器

将 Laravel 项目上传到服务器时出现错误 500

Laravel:将上传的文件保存到会话中

Laravel 5.2将公共文件夹更改为共享服务器上的public_html [重复]

如何将 > 5 mb 的图像上传到服务器?

将 laravel 供应商移动到服务器