Подтвердить что ты не робот

Получение внутренней внутренней ошибки сервера на Laravel 5+ Ubuntu 14.04

Я устанавливал Laravel много раз в ОС Windows, но такого типа проблем не возникало. Этот 500 внутренних серверов обычно возникает, когда ваш модуль "mod_rewrite" не включен.

Однако, на Ubuntu 14.04 эта проблема дает мне головную боль. Я установил rewrite_mod, но он также не работает. Я предоставил доступ ко всем моим папкам и файлам внутри i.e.

/вар/WWW/HTML/laravel_project

Тем не менее это не работает. Изменен .htaccess также от оригинала к этому.

    +FollowSymLinks
RewriteEngine On

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

У меня есть все необходимые расширения, необходимые для Laravel 5+. Осталось что-то, чего я не делал?

4b9b3361

Ответ 1

Наконец-то преодолел проблему

  • Проблема была не в файле .htaccess, а в файле index.php. Проблема была в доступе к файлам и требовании разрешений.

Для решения проблемы я запустил следующие команды через терминал.

sudo chmod -R 755 laravel_blog

а затем введите ниже, чтобы Laravel записать файл в папку хранения

chmod -R o+w laravel_blog/storage

Эти две команды решили проблему.

Ответ 2

Создайте файл .env и запустите:

php artisan key:generate

Это сработало для меня после того, как я потянул проект git.

После создания файла .env и генерации ключа запустите приведенный ниже код:

php artisan cache:clear 
php artisan config:clear

Ответ 3

После установки прогона под командой

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

здесь "laravel" - это имя каталога, в котором установлена ​​laravel

Ответ 4

Я исправил с помощью этой команды:

   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 или другой, и это должно работать.

Ответ 5

Я столкнулся с подобной ошибкой. Я проверил журнал в /var/log/apache2/error.log и нашел UnexpectedValueException

Я изменил владельца на пользователя apache папки хранения в каталоге проекта.

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

В моем случае владелец процесса apache2 www-data, поэтому измените его на ваш, это можно найти в файле конфигурации apache2. Надеюсь, это вам полезно.

Ответ 6

Попробуйте проверить, есть ли у вас файл .env.

В основном эта вещь может вызвать что-то подобное. Попробуйте создать файл, затем скопируйте все из .env.example, вставьте его в созданный файл и назовите его .env. или просто переименуйте файл .env.example в .env и выполните php artisan key:generate

Ответ 7

Может другое решение этой проблемы:

Установите необходимые пакеты, запустив команду composer из корня проекта:

sudo composer install

ОБНОВИТЬ:

  • Вы не должны запускать эту команду на рабочем сервере, но некоторые проблемы с composer могут быть решены с помощью этого в локальных средах.

РЕДАКТИРОВАТЬ:

  • взгляните на https://getcomposer.org/doc/faqs/how-to-install-untrusted-packages-safely.md, чтобы понять, почему запуск composer install от имени пользователя root не является хорошей идеей
  • Если вам нужно запустить его как root, укажите следующие флаги, чтобы заблокировать выполнение стороннего кода во время установки --no-plugins --no-scripts

Ответ 8

Иногда возникает проблема с версией php. Нам нужно изменить версию php с сервера. Просто напишите ниже строку в файле .htaccess:

AddHandler application/x-httpd-php5 .php

Ответ 9

У меня были установлены PHP 7.0 и PHP 7.1, и я использовал PHP 7.1 в командной строке, а PHP 7.0 был включен в Apache, что может привести к проблемам при использовании Laravel Framework и localhost Apache2 с laravel.

Сначала проверьте ваш файл композитора, чтобы увидеть версию PHP.

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

Проверьте вашу текущую версию PHP в командной строке

php -v

Проверьте вашу текущую версию php на Apache, я сделал с помощью браузера.

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

Ответ 10

Запустите эти две команды в каталоге, где установлен Laravel:

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

Затем очистите кеш и сбросьте автозагрузку:

php artisan cache:clear
composer dump-autoload

Ответ 11

Частая проблема при использовании git:

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

Решил это, вручную добавив файл .env на сервер или загрузив его через FTP

Ответ 12

Я сталкивался с этой проблемой много раз. Попробуйте один из этих шагов, это мне очень помогло. Может быть, это также поможет вам.

  1. Прежде всего, проверьте ваши права доступа к файлу.
  2. Чтобы исправить права доступа к файлу sudo chmod 755 -R your_project
  3. Затем выполните команду chmod -R o + w your_project/storage, чтобы записать файл в папку хранилища.
  4. PHP кэш ремесленника: очистить
    композитор дамп-автозагрузка
  5. Ключ ремесленника php: генерировать
  6. Затем проверьте требования к серверу согласно требованию laravel.
  7. Много раз вы получили эту ошибку из-за версии php. Попробуйте изменить версию php в cpanel.
  8. Затем настройте файл .htaccess правильно

Ответ 13

Запустите эти две команды в корневом каталоге laravel

найти * -тип d -print0 | xargs -0 chmod 0755 # для каталогов

найти. -тип f -print0 | xargs -0 chmod 0644 # для файлов

Ответ 14

Помимо перечисленных выше причин, есть и другие причины, по которым laravel может дать 500 внутренних ошибок сервера. Включая отсутствующий или старый CSRF, синтаксическую ошибку, конфигурацию прошивки .htaccess и т.д. Здесь представлен весь список https://abbasharoon.me/how-to-fix-laravel-ajax-500-internal-server-error/

Ответ 15

Сначала разрешите все разрешения для вашей папки проекта (предположим, что это называется 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),

чтобы вы могли узнать, в чем причина вашей ошибки.

Ответ 16

У меня похожая проблема с хостом общего ресурса. У меня была ошибка 500 Я только что исправил, проверив версию Laravel и версию PHP. Ошибка была в том, что Laravel 5.6 не работает на PHP 7.0.x Когда я это узнал, я просто перенастроил проект на Laravel 5.5, который совместим с PHP 7.0.x, теперь все правильно. Другая причина, по которой у меня иногда возникают проблемы, - это то, что по FTP я получаю поврежденные файлы и вынужден загружать проект более одного раза. Надеюсь, что это поможет в будущем, я не нашел так много информации в этой теме.

Ответ 17

Для тех из вас, кто любит меня, все еще есть ошибки после попытки ответить на все остальные вопросы:

Проверьте версию php apache, последняя версия laravel работает только с php7.1. Итак, вы должны:

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

надеюсь это поможет

Ответ 18

В соответствии с журналами:

[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.

Установив и обновив с помощью композитора, я смог наконец решить проблему.

sudo composer install
sudo composer update

Ответ 19

Удостоверьтесь, что папка с напитком с предикатом записи (chmod o + w) работает для меня как шарм.

Ответ 20

Из-за отсутствия права писать каталог журнала.
Хранилище chmod 755 -R

Ответ 21

Я столкнулся с этой проблемой и исправил обновление своей версии php в apache до 5.6.x

Ответ 22

Измените разрешение веб-папки только с помощью этой команды:

sudo chmod 755 -R your_folder

Ответ 23

если его на живом сервере попробуйте это

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

затем также убедитесь, что версия php в вашем composer.json такая же, как и на вашем сервере.

Проверьте версию php в своем терминале, используя php -v

Ответ 24

Я прочитал все комментарии и предложения. 500 - HTTP ERROR CODE представляет внутреннюю ошибку сервера.

Причины этой ошибки:

  • Там в основном причина из-за проблем с разрешениями
  • Переменные среды не найдены или файл .env не найден в вашем корневом каталоге
  • Проблема расширений PHP
  • Проблема с базой данных

Fix:

  • Установите правильные разрешения:
    • Запустите эти команды (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, и когда вы начнете получать все эти команды, я предлагаю вам создать скрипт, который сэкономит ваше время.

Ответ 25

Я только что выполнил следующую команду:

php artisan passport:install

Я использовал паспорт для запуска моего приложения полностью на основе API и Vue.js. Laravel работал нормально, но каждый раз, когда я пытался войти через мой API, я получал ошибку. После запуска команды и обновления client_id и client_secret в моих файлах Laravel, а затем отправка новых обновлений на работающий сервер, проблема была решена. В моей пользовательской модели у меня есть следующий скрипт:

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)

Я использовал клиент предоставления пароля. Надеется, что это помогает кому-то там :)