在Laravel 5+ Ubuntu 14.04上出现500个内部服务器错误

2020/10/15 06:21 · php ·  · 0评论

我已经在Windows OS上安装了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]

我也有Laravel 5+所需的所有必要扩展。还有我没做的事吗?

终于克服了这个问题

  • 不是.htaccess文件是问题,也不是index.php。问题出在访问文件并需要权限。

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

sudo chmod -R 755 laravel_blog

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

chmod -R o+w laravel_blog/storage

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

创建.env文件并运行:

php artisan key:generate

在拉动git项目后,这对我有用。

创建.env文件并生成密钥后,运行以下代码:

php artisan cache:clear 
php artisan config:clear

安装后运行以下命令

sudo chmod 755 -R laravel
chmod -R o+w laravel/storage

此处“ laravel”是laravel安装目录的名称

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

通常,这件事会导致类似的事情。尝试创建一个文件,然后从中复制所有内容.env.example,将其粘贴到创建的文件中并命名.env或jsut只需将.env.example文件重命名.env并运行php artisan key:generate

我使用以下命令修复了问题:

   rm -rf app/storage/logs/laravel.logs
   chmod -R 777 app/storage,
   php artisan cache:clear,
   php artisan dump-autoload OR composer dump-autoload

而不是重新启动服务器,而XAMPP或另一台服务器应该可以正常工作。

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

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

sudo chown -R www-data:www-data ./storage

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

确保根目录中包含一个包含APP_KEY的.env文件

.env中应包含的内容尚未在其他解决方案中明确说明,我认为我可以将其归结为上面的句子。

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

脚步:

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

笔记:

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

  • 仅具有空白.env无效。

  • 包含参数但没有APP_KEY参数的.env无效。

错误?:在终端中生成应用程序密钥时,它可能会报告为成功,但是如果文件没有预先存在的APP_KEY=则实际上不会将任何密钥放入.env中

作为参考,这是带有有用基线参数的官方.env文件。复制并粘贴您需要的内容:

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

也许可以解决这个问题:

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

sudo composer install

更新:

  • 您不应在生产服务器上运行此命令,但是可以在本地envs上解决composer的某些问题。

编辑:

我安装了PHP 7.0和PHP 7.1,并且在命令行上使用PHP 7.1,并且在Apache上启用了PHP 7.0,当您将Laravel Framework和localhost Apache2与laravel一起使用时,可能会带来麻烦。

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

"php": "^7.1.3",
"laravel/framework": "5.6.*",

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

php -v

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

http://localhost

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

sudo a2dismod php7.2

sudo a2enmod php7.1

sudo service apache2 restart

之后,更改文件夹权限

sudo chmod 755 -R blog

用于存储文件夹

chmod -R o+w blog/storage

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

Laravel's .gitignore ignores the .env file which when missing generates this error

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

有时php版本存在问题。我们需要从服务器更改php版本。只需在.htaccess文件中的字符串下方写下

AddHandler application/x-httpd-php5 .php

首先,为您的项目文件夹(假设它叫laravel),存储子文件夹及其日志子文件夹和供应商子文件夹(laravel / storage,laravel / storage / logs和laravel / vendor)授予所有权限。

然后检查是否有.env文件-如果没有,则可以运行:

$ mv .env.example .env

将您的内置.env.example重命名为所需的.env。

否则,打开调试模式-打开.env并设置

APP_DEBUG=true

并打开laravel / config / app.php并更改

'debug' => env('APP_DEBUG', false), 

'debug' => env('APP_DEBUG', true),

这样您就可以找出导致错误的原因。

在安装Laravel的目录中运行以下两个命令:

sudo chmod 755 -R DIRECTORY_NAME
chmod -R o+w DIRECTORY_NAME/storage

然后清除缓存并转储自动加载:

php artisan cache:clear
composer dump-autoload

我已经多次面对这个问题。尝试这些步骤之一对我很有帮助。也许它也会对您有帮助。

  1. 首先检查您的文件权限。
  2. 修复文件权限sudo chmod 755 -R your_project
  3. 然后chmod -R o + w your_project / storage将文件写入存储文件夹。
  4. PHP的工匠缓存:清除
    作曲家转储自动加载
  5. PHP的工匠键:生成
  6. 然后根据laravel要求检查服务器要求。
  7. 很多时候由于php版本而出现此 错误尝试在cpanel中更改您的php版本
  8. 然后正确配置您的 .htaccess文件

我阅读了所有评论和建议。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
  • 如果.env文件不存在,请创建一个touch .env并粘贴您的环境变量,然后运行
   php artisan key:generate
   php artisan cache:clear
   php artisan config:clear
   composer dump-autoload
  • 检查您的php.ini文件并取消注释所需的扩展名(在某些情况下,您必须通过运行此命令来安装扩展名 apt-get install php7.2-[extension-name]
  • 检查.env文件中的数据库凭据和值并向该数据库的数据库用户授予权限。

这些是您在部署laravel应用程序时可能会遇到的一些常见问题,并且您开始获取所有这些命令时,建议您编写一个可节省时间的脚本。

如果您使用无业游民,请尝试以下操作:

首先删除当前/供应商中的config.php。

运行以下命令:

php artisan config:clear
php artisan clear-compiled
php artisan optimize

不运行php artisan config:cache。

希望对您有所帮助。

在laravel的根目录上运行这两个命令

查找*-类型d -print0 | xargs -0 chmod 0755#用于目录

找 。型f -print0 | xargs -0 chmod 0644#用于文件

共享主机存在类似问题。我遇到500错误。我只是通过检查Laravel版本和PHP版本来解决。错误是因为Laravel 5.6不能在PHP 7.0.x上运行,一旦我知道了这一点,我就将项目重新配置为与PHP 7.0.x兼容的Laravel 5.5,现在一切正常。有时我遇到问题的另一个原因是FTP我的文件损坏,并且必须多次上传项目。希望以后能帮到我,在本主题中找不到太多信息。

对于像我这样的人,在尝试了所有其他答案后仍然出现错误:

检查apache使用的php版本,最新的laravel仅适用于php7.1。因此,您必须:

sudo a2dismod php[yourversion]
sudo a2enmod php7.1
sudo systemctl restart apache2

希望这可以帮助

如果它在实时服务器上尝试

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
</IfModule>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /


# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

然后还要确保composer.json中的php版本与服务器的版本相同。

使用以下命令在终端中检查您的php版本 php -v

确保您已composer update在服务器实例上运行

根据日志:

[06-Feb-2016 22:38:48 Europe/Berlin] PHP Warning:  require(/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17
[06-Feb-2016 22:38:48 Europe/Berlin] PHP Fatal error:  require(): Failed opening required '/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php' (include_path='.:/Applications/MAMP/bin/php/php7.0.0/lib/php') in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17
[06-Feb-2016 22:43:37 Europe/Berlin] PHP Warning:  require(/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17
[06-Feb-2016 22:43:37 Europe/Berlin] PHP Fatal error:  require(): Failed opening required '/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php' (include_path='.:/Applications/MAMP/bin/php/php7.0.0/lib/php') in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17

在/ vendor文件夹中打开文件有些失败。

通过composer安装和更新,我终于可以解决问题。

sudo composer install
sudo composer update

确保具有写权限(chmod o + w)的存储文件夹,对我来说就像一个魅力。

由于没有写日志目录的权利。
chmod 755存储器-R

我遇到了这个问题,并通过将我的php版本升级到5.6.x来解决

仅通过以下命令更改Web文件夹权限:

sudo chmod 755 -R your_folder

我只是运行以下命令:

php artisan passport:install

我使用护照完全基于API和Vue.js运行我的应用程序。Laravel工作正常,但是每次我尝试通过API登录时都会收到错误消息。在运行命令并更新了我的Laravel文件上的client_id和client_secret之后,将新更新推送到了实时服务器中,问题得以解决。在我的用户模型中,我有一个脚本,如下所示:

public function generateToken($request)
{
    $http = new \GuzzleHttp\Client();
    $response = $http->post(URL::to('/').'/oauth/token', [
        'form_params' => [
            'grant_type' => 'password',
            'client_id' => '6',
            'client_secret' => 'x3yhgWVqF8sSaMev4JI3yvsVxfbgkfRJmqzlpiMQ',
            'username' => $this->email,
            'password' => $request->input('password'),
            'scope' => '',
        ],
    ]);
    //  Lets get an array instead of a stdObject so that we can return without errors
    $response = json_decode($response->getBody(), true);

    return oq_api_notify([
                'auth' => $response,                                        //  API ACCESS TOKEN
                'user' => $this->load(['settings'])->toArray(),
            ], 201);
}

我只是更新了client_id和client_secret,然后才保存。由于passport命令为您提供了两个客户端密钥:

1)个人访问客户端(client_id和client_secret)

2)密码授予客户端(client_id和client_secret)

我使用了密码授予客户端。希望这可以帮助某人:)

首先,如果您的laravel存储库中没有.env文件。复制并粘贴.env.example文件,然后将其重命名为.env。然后打开.env文件,并在数据库部分给出您的数据库描述。运行:php artisan键:生成php artisan缓存:clear php artisan config:缓存php artisan config:clear composer dump-autoload php artisan服务

本文地址:http://php.askforanswer.com/zailaravel-5-ubuntu-14-04shangchuxian500geneibufuwuqicuowu.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!