我已将laravel项目文件夹上传到cpanel托管中。我确实没有VPS。我在laracast和stackoveflow中读过许多例子,但仍然得到这500个内部错误。这是我的设置。
我已将laravel项目中的公共文件夹分开,并将另一个放在我的托管的根目录中,就像这样。
|-- my_other_folder_project/
|-- [some other folders...]
|-- public_html/
| |-- [some other folders...]
| |-- my_public_project/
并将index.php设置更改为:
来自
require __DIR__.'/../vendor/autoload.php';
到
require __DIR__.'/../../my_other_folder_project/vendor/autoload.php';
来自
$app = require_once __DIR__.'/../bootstrap/app.php';
到
$app = require_once __DIR__.'/../../my_other_folder_project/bootstrap/app.php';
我为公共文件夹创建了.htaccess文件,如下所示:
DirectoryIndex index.php
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
我的PHP为7.1,我已经检查了其他需求,如OpenSSL,PDO,Mbstring,Tokenizer已经安装。
但仍然得到这500个内部服务器错误,我已经为此寻找了很多参考,但指出了我已经做过的步骤。
答案 0 :(得分:6)
由于服务器的PHP版本低于Laravel的最低版本要求,可能会出现错误500。
根据我的经验,当我使用Laravel 5.6时,我的PHP版本仍为7.0,而实际上至少需要PHP 7.1.3时,问题才出现了。在cPanel的PHP Selector中更改我的PHP版本可以解决此问题。
确保服务器的PHP版本等于或高于Laravel版本所需的版本。
答案 1 :(得分:3)
第一次,您可以查看您的php信息
<?php
phpinfo();
?>
你可以在那里搜索“mbstring”......
如果仍未安装mbstring,您可以要求提供商安装它。
如果已经安装并仍然出现错误500,那么你必须在phpinfo()中查看你的php版本。并使用php artisan命令清除缓存。当你有shell的权限时,你可以尝试使用命令“php -v”检查你的php版本,并查看php的默认php。
答案 2 :(得分:0)
仅说明在共享主机上上传时遇到的一些问题以及如何保存它。 错误500出现在我的页面上。
经过几次调查, 我发现在公共文件夹和主应用程序中的隐藏文件均未包含在我的上传文件中。
因此,只需确保您显示隐藏文件,然后再进行存档/上传
因为如果未启用它来显示隐藏文件,它将不会被上传/存档。
缺少这些文件也会产生500错误。
我使用过laravel 5.5。*
答案 3 :(得分:0)
以上解决方案均不适用于我..所以尝试了:
php composer.phar install
在我的共享主机上(第一次)将项目构建在本地计算机上,并且可以正常工作。
答案 4 :(得分:0)
确保您已运行composer install
并且应该有一个.env文件
答案 5 :(得分:0)
还要确保文件夹和文件具有正确的权限。以下是设置正确权限的方法。
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;