在Laravel 5+ Ubuntu 14.04上获得500内部服务器错误

DpE*_*pEN 65 php apache ubuntu .htaccess mod-rewrite

我在Windows操作系统上多次安装Laravel,但它从未发生过这种类型的问题.当您的"mod_rewrite"模块未打开时,通常会发生此500内部服务器.

但是,在Ubuntu 14.04上,这个问题让我很头疼.我已经安装了rewrite_mod但它也没有用.我已经访问了我的所有文件夹和文件,即

在/ var/www/html等/ laravel_project

它仍然无效.改变.htaccess也从原来改为此.

    +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)

我也拥有Laravel 5+所需的所有必要扩展.还有什么东西我不做吗?

DpE*_*pEN 194

最后克服了这个问题

  • 它不是.htaccess文件,也不是index.php.问题在于访问文件和需要权限.

为了解决这个问题,我通过终端运行了以下命令.

sudo chmod -R 755 laravel_blog
Run Code Online (Sandbox Code Playgroud)

然后在下面键入以允许laravel将文件写入存储文件夹

chmod -R o+w laravel_blog/storage
Run Code Online (Sandbox Code Playgroud)

这两个命令解决了这个问题.

  • 有人给这个人一个饼干. (10认同)
  • 这是一个非常糟糕的建议,chmod将所有文件设置为+ x。我假设您想对目录执行此操作,在这种情况下,您将使用find。 (2认同)

Goo*_*ife 33

一个新手,但这是我做了因为我没有钥匙

创建了.env文件并运行

php artisan key:generate
Run Code Online (Sandbox Code Playgroud)

拉动一个git项目后,这对我有用

  • 这对我有用。不要犯菜鸟错误,安装laravel项目后确保将.env.example重命名为.env或php artisan key:generate会崩溃 (5认同)
  • `php artisan cache:clear php artisan config:clear` 适用于我的情况 (2认同)

小智 24

安装后运行以下命令

sudo chmod 755 -R laravel
chmod -R o+w laravel/storage
Run Code Online (Sandbox Code Playgroud)

这里"laravel"是laravel安装目录的名称


Mar*_*ack 22

确保根目录中存在包含 APP_KEY的 .env 文件。

.env 中应该包含的内容在其他解决方案中没有明确说明,我认为我会将其归结为上面的句子。

这修复了我在全新安装 Laravel 时出现的 500 错误。

脚步:

  1. 在 root 中创建一个 .env 文件(例如touch .env
  2. 确保它至少包含一行: APP_KEY=
  3. 在终端生成应用密钥: php artisan key:generate

更多 .env 参数:

作为参考,这里是带有有用基线参数的官方 .env。复制粘贴你需要的:

https://github.com/laravel/laravel/blob/master/.env.example

笔记:

  • 我的特定安装不包含任何 .env 任何内容(示例或其他)

  • 仅仅拥有一个空白的 .env 是行不通的。

  • 包含参数但没有APP_KEY参数的.env不起作用。

错误?:当终端生成一个应用程序键,它似乎谎报成功,但是没有密钥真正能拿到放置在.ENV如果文件丢失了开头的行APP_KEY=


小智 14

尝试检查您是否有.env文件.

大多数情况下,这件事可能导致类似的事情.尝试创建一个文件,然后复制所有内容.env.example,将其粘贴到您创建的文件并命名.env.或者jsut只需将.env.example文件重命名为.env并运行即可php artisan key:generate


小智 13

我修复了这个命令:

   rm -rf app/storage/logs/laravel.logs
   chmod -R 777 app/storage,
   php artisan cache:clear,
   php artisan dump-autoload OR composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

比重新启动服务器eather XAMPP另一个,那应该是工作.

  • 777 是一个非常糟糕的命令,它将为互联网上的任何人提供 WRITE 访问权限。644 更可取。 (3认同)

Snr*_*iud 11

我遇到了类似的错误.我检查了登录/var/log/apache2/error.log,发现了一个UnexpectedValueException

我将所有者更改为项目目录下存储文件夹的apache用户.

sudo chown -R www-data:www-data ./storage
Run Code Online (Sandbox Code Playgroud)

在我的情况下,apache2进程所有者是www-data,所以将此更改为您的,这可以在apache2配置文件中找到.希望这对你有用.


Sae*_*eid 11

运行这些命令

1. composer install 
2. mv .env.example .env 
3. php artisan cache:clear 
4. composer dump-autoload 
5. php artisan key:generate
Run Code Online (Sandbox Code Playgroud)

我遇到了这个问题...


Chr*_*las 9

可能是另一个解决此问题的方法

通过从项目的根目录运行composer命令来安装所需的包:

sudo composer install
Run Code Online (Sandbox Code Playgroud)

更新:

  • 您不应该在生产服务器上运行此命令,但可以使用本地环境中的此解决方案解决编译器的一些问题.

  • 我相信用sudo运行该命令是一个潜在的安全漏洞 (5认同)
  • @JimmyObonyoAbor实际上这是有效的.根据日志,500是因为/供应商中的某些文件丢失了.你怎么解决这个问题?通过运行composer install/update.感谢和upvote,Christos Papoulas (3认同)

Hed*_*ary 9

.env使用以下 cmd 命令创建文件:

cp .env-example .env
Run Code Online (Sandbox Code Playgroud)

然后为您的项目生成一个密钥:

php artisan key:generate
Run Code Online (Sandbox Code Playgroud)

之后使用以下命令清除缓存:

//---Delete Configuration Cahce
php artisan config:cache
//---Clear Application Cache
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)


Smi*_*tel 7

我阅读了所有的评论和建议。500 - HTTP 错误代码表示内部服务器错误。

出现此错误的原因:

  • 这些主要是由于权限问题引起的
  • .env在您的根目录中未找到环境变量或文件
  • PHP扩展问题
  • 数据库问题

使固定:

  • 设置正确的权限:
  • 运行这些命令 (Ubuntu/Debian)
find /path/to/your/root/dir/ -type f -exec chmod 644 {} \;
find /path/to/your/root/dir/ -type d -exec chmod 755 {} \;

chown -R www-data:www-data /path/to/your/root/dir/

chgrp -R www-data storage bootstrap/cache
chmod -R ug+rwx storage bootstrap/cache
Run Code Online (Sandbox Code Playgroud)
  • 如果.env文件不存在,请创建一个touch .env并粘贴您的环境变量,然后运行
   php artisan key:generate
   php artisan cache:clear
   php artisan config:clear
   composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
  • 检查您的 php.ini 文件并取消注释您需要的扩展(在某些情况下,您必须通过运行此命令来安装扩展 apt-get install php7.2-[extension-name]
  • 检查.env文件中的数据库凭据和值。并为该数据库的数据库用户授予权限。

这些是您在部署 Laravel 应用程序时可能会遇到的一些常见问题,一旦您开始获得所有这些命令,我​​建议您制作一个脚本来节省您的时间。


Sau*_*pos 5

我安装了 PHP 7.0 和 PHP 7.1,我在命令行上使用了 PHP 7.1,并且在 Apache 上启用了 PHP 7.0,当您使用 Laravel 框架和本地主机 Apache2 与 Laravel 时,这种混乱会带来问题。

首先检查您的作曲家文件以查看您的 PHP 版本。

"php": "^7.1.3",
"laravel/framework": "5.6.*",
Run Code Online (Sandbox Code Playgroud)

在命令行上检查您当前的 php 版本

php -v
Run Code Online (Sandbox Code Playgroud)

检查您当前在 Apache 上启用的 php 版本,我使用浏览器。

http://localhost
Run Code Online (Sandbox Code Playgroud)

如果不一样,请禁用当前版本并启用最新版本。

sudo a2dismod php7.2

sudo a2enmod php7.1

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

之后更改文件夹权限

sudo chmod 755 -R blog
Run Code Online (Sandbox Code Playgroud)

用于存储文件夹

chmod -R o+w blog/storage
Run Code Online (Sandbox Code Playgroud)


Mar*_*hem 5

使用 git 时经常出现的问题:

Laravel's .gitignore ignores the .env file which when missing generates this error
Run Code Online (Sandbox Code Playgroud)

通过在服务器上手动添加 .env 文件或通过 FTP 上传来解决此问题


Hed*_*ary 5

.env首先,如果您的 Laravel 存储库中没有文件。.env.example使用以下 cmd 命令复制文件cp .env.example .env并打开.env文件并应用您的配置(如果需要)。

运行这些命令:

//---Generate Key in your project
php artisan key:generate
//---Flush the application cache
php artisan cache:clear
//---Remove the configuration cache file
php artisan config:cache
php artisan config:clear
//---Regenerates the list of all classes that need to be included in the project
composer dump-autoload
//---Restart your Server
php artisan serve
Run Code Online (Sandbox Code Playgroud)