【发布时间】:2023-03-22 00:50:01
【问题描述】:
我对 laravel 7 项目有一个令人困惑的错误。当我将这个项目上传到主目录时它工作成功。但是当我将它上传到子域时,它给了我 500 错误。 我做了这个答案中提到的步骤,但它也不起作用 How to set up a laravel project on cPanel subdomain? 希望有人帮助我
【问题讨论】:
-
错误 500 告诉我们什么?
我对 laravel 7 项目有一个令人困惑的错误。当我将这个项目上传到主目录时它工作成功。但是当我将它上传到子域时,它给了我 500 错误。 我做了这个答案中提到的步骤,但它也不起作用 How to set up a laravel project on cPanel subdomain? 希望有人帮助我
【问题讨论】:
首先,我要感谢所有贡献者。
我知道错误的原因。
在这张图片中:
[![在此处输入图片描述][1]][1]
名为public_html 的文件并不像看起来那样位于根目录中。
这只是一个捷径:/domains/zigzagfamily.com/public_html
所以当我在public_html 中创建了一个名为chatbot 的文件夹时,
我写在index.php:
require __DIR__.'/../../chatbot/vendor/autoload.php';
$app = require_once __DIR__.'/../../chatbot/bootstrap/app.php';
这是错误的,因为正如我所说,public_html 在这里:
/domains/zigzagfamily.com/public_html
所以当我返回两个文件夹时,我现在在zigzagfamily.com
因此,我必须返回另外两个文件夹以位于根目录中才能访问位于根目录中的chatbot 文件夹。
总结:正确的代码是:
require __DIR__.'/../../../../chatbot/vendor/autoload.php';
$app = require_once __DIR__.'/../../../../chatbot/bootstrap/app.php';
【讨论】:
Laravel 项目启动表单public 文件夹。
从根目录启动它的坏习惯。
您必须将您的项目放入宿主的根目录(与public_html 文件夹处于同一级别),然后删除public_html 文件夹并创建下一个符号链接。
在终端根目录下运行命令
ln -s your_project_folder/public public_html
在这种情况下,您无需编辑 index.php 文件。
如果您打算将来使用任何部署器,我建议使用下一个文件夹结构:
/public_html <- link to
/sites/your_project_name/current/public
并将您当前的主要项目保存在current 文件夹中。
【讨论】:
由于 laravel 使用漂亮的 URL,使用 zigzagfamily.com/chatbot 将不起作用。
在您的 cPanel 中创建一个指向 /public_html/chatbot
的子域 (chatbot.zigzagfamily.com)进入 /public_html/chatbot 文件夹,上传/移动您的 /chatbot/public 内容。
从以下位置修改您的 /public_html/chatbot/index.php 文件:
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
收件人:
require __DIR__.'/../../chatbot/vendor/autoload.php';
$app = require_once __DIR__.'/../../chatbot/bootstrap/app.php';
最后,确保bootstrap文件夹和storage文件夹有0775权限(用于测试)。
【讨论】: