cPanel中laravel的图像根问题



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

使用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;

/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给出响应

如果你没有服务器的管理权限,你可以看看这个教程:如何在Cpanel共享主机上部署Laravel 8项目

最新更新