【问题标题】:Image root issue in laravel in cPanelcPanel中laravel中的图像根问题
【发布时间】:2021-08-09 14:36:55
【问题描述】:

图像存储在公用文件夹外部和视图中,从公用文件夹内部调用。在本地主机中一切正常。在 cpanel 中上传项目后,我将 index.php 和 htaccess 放在公共文件夹之外。我如何从同一个文件夹存储和调用它们?谢谢。

【问题讨论】:

  • 运行命令:php artisan storage:link
  • “他们”是谁?为什么将index.php 移出公用文件夹?
  • 它们表示图像。按照教程从网址中删除“公共”。谢谢。
  • @Himel laravel 公共文件夹必须是您的域根文件夹。永远不要移动 index.php 文件...
  • i它属于laravel公用文件夹...

标签: laravel image cpanel


【解决方案1】:

当使用 Laravel 时,所有 HTTP 请求都必须在 public 目录下。但是由于您使用的是 cPanel,所有请求默认直接命中public_html

您试图通过将 index.php.htaccess 文件从 public_html/public 移动到 public_html 来克服它,但您破坏了它的结构。

如果您在服务器上具有管理(例如:root)访问权限,您可以通过编辑您的 Web 服务器(我假设您使用 Apache)将您的域的请求直接指向您的 Laraval 应用程序的 public 目录来解决这个问题。

通常 cPanel 中的每个网站都有单独的配置文件。他们的路径是这样的:

/var/cpanel/userdata/CPANELUSER/WEBSITEDOMAIN.COM/var/cpanel/userdata/CPANELUSER/WEBSITEDOMAIN.COM_SSL

在这个文件中有一个documentroot字段,默认指向public_html目录:

documentroot: /home/CPANELUSER/public_html

您需要更改它并将其指向应用程序的public 目录;

documentroot: /home/CPANELUSER/laravel/project/path/public

更新这两个文件后,您需要重新构建 Apache 配置并重新启动它;

/usr/local/cpanel/scripts/rebuildhttpdconf /usr/local/cpanel/scripts/restartsrv_httpd

如果这2行不行,你可以试试这2行;

/scripts/rebuildhttpdconf /scripts/restartsrv_apache

如果一切顺利,所有 HTTP 请求都会按预期到达您的 Laravel 应用程序的 public 目录。

之后;如果您上传的文件存储在 public 存储中,Laravel 会将它们放入 storage/app/public 并且您需要从 public 目录到它的符号链接。

Laravel 在你运行时创建它

php artisan storage:link

现在您的应用程序的所有请求为your.domain/storage/bla.jpg 都会得到来自storage/app/public/bla.jpg 的响应

如果您没有服务器的管理权限,您可以查看本教程:How to deploy Laravel 8 project on Cpanel shared hosting

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2018-03-05
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2020-01-23
    相关资源
    最近更新 更多