在 Laravel 5 + Ubuntu 14.04上获得500个内部服务器错误(请求()打开所需路径失败)

我在 Windows 操作系统上安装了很多次 Laravel,但从来没有遇到过这个问题。

然而,在 Ubuntu 14.04上,我收到了一个500内部服务器错误,在我的日志中有这样的消息:

[ Wed Jul 2210:20.19.5690632015][ : error ][ pid 1376][ client 127.0.0.1:52636] PHP 致命错误: need () : 未能打开所需’/var/www/html/laravel _ blog/。./bootstrap/autoload.php’(include _ path =’。:/usr/share/php:/usr/share/pear’)在/var/www/html/laravel _ blog/index.php 第22行

以前我有问题时,mod _ rewrite 没有安装或设置正确,但我已经安装了它,它不工作。变了。Htaccess 以及从原来到这。

    +FollowSymLinks
RewriteEngine On


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

我已经把我所有的文件夹和档案都给他们了。

/var/www/html/laravel_project

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

527909 次浏览

终于克服了这个问题

  • 不是因为。Htaccess 文件,这是问题所在,也不是 index.php。问题在于访问文件和需要权限。

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

sudo chmod -R 755 laravel_blog

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

chmod -R o+w laravel_blog/storage

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

也许这个问题的另一个解决办法是:

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

sudo composer install

更新:

  • 您不应该在生产服务器上运行此命令,但可以在本地 envs 上使用此命令解决与编写器有关的一些问题。

编辑:

根据记录:

[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

将文件打开到/卖方文件夹中出现了一些错误。

By installing and updating via composer, I was able to finally solve the issue.

sudo composer install
sudo composer update

安装后运行以下命令

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

这里的“ laravel”是安装 laravel 的目录的名称

我也遇到过类似的错误。我检查了 /var/log/apache2/error.log中的日志,发现了一个 意外值异常

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

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

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

在幼虫根上运行这两个命令

find * -type d -print0 | xargs -0 chmod 0755 # for directories

输入 f-print0 | xargs -0 chmod 0644 # for files

确保存储文件夹具有写优先权(chmod o + w) ,为我工作的魅力。

有时候 php 版本会有问题。我们需要从服务器改变 PHP 版本。只需在 . htaccess文件中写下字符串:

AddHandler application/x-httpd-php5 .php

因为没有写入日志目录的权限。
Chmod 755存储器 R

首先允许您的项目文件夹(假设它被称为 laravel) ,存储子文件夹及其日志子文件夹和供应商子文件夹(laravel/Storage,laravel/Storage/log 和 laravel/)的所有权限。

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

$ mv .env.example .env

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

否则打开 debug 模式-open. env 并设置

APP_DEBUG=true

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

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

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

这样你就可以找出你犯错误的原因。

我修正了这个命令:

   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 或另一个应该是工作。

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

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

Then clear the cache and dump the auto load:

php artisan cache:clear
composer dump-autoload

创建. env 文件并运行:

php artisan key:generate

This worked for me after pulling a git project.

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

php artisan cache:clear
php artisan config:clear

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

Only change the web folder permission through this command:

sudo chmod 755 -R your_folder

我对共享主机也有类似的问题。我出了500个错误。我刚刚通过检查 Laravel 版本和 PHP 版本修复了这个问题。这个错误是因为 Laravel 5.6不能在 PHP 7.0.x 上运行一旦我知道了这一点,我就把项目重新配置为与 PHP 7.0.x 兼容的 Laravel 5.5,现在一切都正常了。我有问题的另一个原因,有时是 FTP 我得到损坏的文件,并不止一次上传项目。 希望这对以后有所帮助,我在这个话题中没有找到这么多的信息。

对于那些像我一样的人,在尝试了所有其他的答案之后仍然会犯错误:

检查 php apache 的使用版本,最新的 laravel 只适用于 php7.1。 So you have to :

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

hope this helps

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

首先检查您的作曲家文件以查看 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

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

大多数情况下,这东西会引起这样的事情。尝试创建一个文件,然后从 .env.example复制所有内容,粘贴到您创建的文件,并将其命名为 .env。或者只是简单地将 .env.example文件重命名为 .env并运行 php artisan key:generate

使用 git 时经常遇到的一个问题是:

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

Solved this by manually adding an .env file on the server or uploading it through FTP

这个问题我已经遇到过很多次了。尝试其中一个步骤,它帮助了我很多。也许对你也有帮助。

  1. 首先检查您的文件权限。
  2. 修复文件权限 Sudo chmod 755-R your _ project
  3. 然后 Chmod-R o + w your _ project/Storage将文件写入存储文件夹。
  4. Php Artisan 缓存: 清除
    作曲家自动加载转储
  5. php artisan key:generate
  6. 然后按照幼虫的要求进行 检查服务器要求
  7. 在 cpanel 中多次使用 你可以的 错误,因为 php 版本. 试着改变你的 php 版本
  8. 然后正确配置 . htaccess文件

如果它在一个活的服务器尝试这一点

<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]

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

使用 php -v检查终端中的 php 版本

我读了所有的意见和建议。500-HTTPERRORCODE 代表内部服务器错误。

这个错误的原因:

  • 这些主要是由于许可问题引起的
  • 根目录中找不到环境变量或 .env文件
  • PHP extensions problem
  • 数据库有问题

解决方案:

  • 设置正确的权限:
  • Run these commands (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 应用程序时可能会遇到的一些常见问题,一旦你开始得到所有这些命令,我建议你编写一个脚本来节省你的时间。

我刚刚运行了以下命令:

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,然后才保存起来:

1)个人访问客户端(client _ id & client _ secret)

2) Password grant client (client_id & client_secret)

我使用的是密码授权客户端。希望这对某些人有所帮助:)

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

如果你使用流浪汉,试试这个:

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

运行以下命令:

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

不运行 php 工匠配置: 缓存。

希望这个能帮上忙。

确保.env 文件 < strong > 包含 APP _ KEY 存在于 root 中。

什么应该在。Env 在其他解决方案中没有明确说明,所以我想把它归结为上面的句子。

这修正了我在新安装 Laravel 时的500错误。

Steps:

  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 不起作用。

小虫?: 在终端生成应用程序密钥时,如果文件缺少以 APP_KEY=开头的一行,就会错误地报告成功。

首先,如果 Laravel 存储库中没有 .env文件。使用以下 cmd 命令 cp .env.example .env复制 .env.example文件并打开 .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

我通过以下命令解决了这个问题:

mv .env.example .env
php artisan cache:clear
composer dump-autoload
php artisan key:generate

那么

php artisan serve

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

cp .env-example .env

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

php artisan key:generate

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

//---Delete Configuration Cahce
php artisan config:cache
//---Clear Application Cache
php artisan cache:clear

如果您在活动服务器上面临这个问题,那么最好的方法是在 web.php 文件中添加下面提到的路由,然后通过 URL 运行所有路由。

大多数时候,这个错误是因为缓存问题,一旦你清除所有的缓存-然后这个错误将得到解决,你可以看到更新代码的结果。

//清除缓存外观值:

Route::get('/clear-cache', function() {
$exitCode = Artisan::call('cache:clear');
return '<h1>Cache facade value cleared</h1>';
});

//Clear Route cache:

Route::get('/route-clear', function() {
$exitCode = Artisan::call('route:clear');
return '<h1>Route cache cleared</h1>';
});

//清除视图缓存:

Route::get('/view-clear', function() {
$exitCode = Artisan::call('view:clear');
return '<h1>View cache cleared</h1>';
});

//清除配置缓存:

Route::get('/config-clear', function() {
$exitCode = Artisan::call('config:clear');
return '<h1>Config cleared</h1>';
});

run these commands

1. composer install
2. mv .env.example .env
3. php artisan cache:clear
4. composer dump-autoload
5. php artisan key:generate

我有个问题。

检查.env 文件是否存在于文件结构中。 否则,请依照下列程序办理:

  1. run command cp .env.example .env from projects root directory.
  2. 运行命令 php artisan key:generate
  3. 刷新浏览器。

Thanks.