在共享主机上使用Laravel - 子域名

4

我正在尝试在共享主机上部署我的 Laravel 应用程序。它应该部署在 www.subdomain.something.com。

我的文件夹结构如下:

    /laravel
       app/
       vendor/
       bootstrap/
       server.php
       artisan
       composer.json
       composer.lock
       phpunit.xml
   /public_html
       subdomain/
       index.php

我的index.php文件有以下路径:
require '/../../laravel/bootstrap/autoload.php';
$app = require_once '/../../laravel/bootstrap/start.php';

我的 paths.php

'app' => __DIR__.'/../../laravel/app',
'public' => __DIR__.'/../../public_html/subdomain',
'base' => __DIR__.'/../../laravel',
'storage' => __DIR__.'/../../laravel/app/storage',

有人能看出我错在哪了吗?我尝试使用谷歌并找到了一堆逐步解释,但似乎都没有用-结果是500个内部服务器错误。

感谢任何反馈。

Wesley


你是否将子域名的文档根目录映射到Laravel的public目录? - Bogdan
我不再有公共目录了,公共目录的内容现在直接在public_html/subdomain中。如果我的表述不太清楚,请见谅,因为我在共享主机上部署方面的经验不是很丰富。 - Wesley
1
你说得很有道理。我把它称为“public”是我的错误,我应该说“public_html/subdomain”。但问题是一样的,子域名的文档根目录是否指向那个目录?如果这是你不知道如何配置的事情,如果你能指定你使用的托管公司,可能会有所帮助。 - Bogdan
经过大量搜索,我已经从使用共享主机转向在云中拥有的虚拟服务器上的Apache。现在似乎一切都正常了...无论如何,还是感谢您的建议! - Wesley
4个回答

2

遵循这里的第一条规则。

如果您使用了第一条规则,则一切都应该正常工作。但是,如果您遇到500 Internal Server Error错误,请通过ssh登录到您的服务器public_html目录,并执行以下命令:

sudo chmod 755 -R laravel

chmod -R o+w laravel/storage

这里的laravel是您的Laravel项目目录。


0

0

请确保您对app/storage/及其所有子目录具有写入权限。这听起来像罪魁祸首,但如果不是,请查看app/storage/logs目录中是否有任何错误。如果没有,请尝试解析服务器日志。


0

我尝试在DreamHost的共享托管上部署我的第一个Laravel 8应用程序,但遇到了一些问题。

  1. 一开始我无法使用composer。虽然Composer 1可用,但我无法将其升级到Composer 2(出现错误)。
  2. 最终,我将所有文件从本地系统上传到子域根目录(例如cota.mydomain.com)。
  3. 当我尝试访问cota.mydomain.com时,出现404错误。
  4. 当我将URL更改为cota.mydomain.com/public/index.php时,应用程序开始工作。但是,所有类似于href="/home"或href="/client/create"的href链接都开始出现“未找到”错误。为了解决这个问题,我必须在href中使用命名路由,例如href="{{ route('client.show',['id'=>$client->id]) }}"。这解决了问题,但显示的URL包括public/index.php,例如cota.mydomain.com/public/index.php/client/show/1
  5. 为了进一步解决问题,我将子域的Web文件夹(根文件夹)更改为包括public,即cota.mydomain.com/public。
  6. 接下来,我在cota.mydomain.con中添加了一个index.php文件,内容如下:header("Location: http://www.cota.mydomain.com/public/index.php"); die();
  7. 这解决了所有问题,包括从链接URL中删除public和index.php。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接