Laravel - 500 Внутренняя ошибка сервера

Я запускаю свой сайт laravel на своем локальном хосте, все работает нормально. Но когда я пытаюсь запустить свой сайт на хостинг-сервере, я получаю внутреннюю ошибку сервера 500? Это из-за моего файла .htaccess или я удаляю общедоступный URL ?

Мой файл .htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

person Mohammad Nurdin    schedule 23.04.2014    source источник
comment
У вас есть информация об удаленной и вашей локальной системе?   -  person René Höhle    schedule 23.04.2014
comment
что ты имеешь в виду? Я не следую.   -  person Mohammad Nurdin    schedule 23.04.2014
comment
Windows, Mac или Linux? Что вы используете в системах? Что будет, если удалить mod_negotiation.c? А если переписать хотя бы блок модуля mod_rewrite? Тогда вы можете быть уверены, что у вас есть синтаксическая ошибка.   -  person René Höhle    schedule 23.04.2014
comment
проверить версию PHP хоста   -  person mwafi    schedule 15.11.2014


Ответы (4)


Попробуйте это на терминале:

sudo chmod -R 755 <your_laravel_project> 

и

chmod -R o+w <your_laravel_project>/storage
person Arunabh Das    schedule 04.01.2016

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

Вы также можете проверить файл журнала Laravel, чтобы узнать немного больше о том, что вызвало ошибку 500. Если в файле журнала нет записи, проблема может быть связана с файлом .htaccess.

person FrancoisBaveye    schedule 19.03.2015

Я столкнулся с аналогичной проблемой с моим провайдером виртуального хостинга. Laravel использует папку public для файлов, которые напрямую доступны для браузера посетителей. Это должен быть корень веб-пространства на виртуальном хостинге.

Проблема возникает, когда вызывается index.php в /public и он пытается получить доступ к файлам за пределами (на уровень выше) корня веб-пространства. Обычно это не допускается.

Вам (или вашему хостинг-провайдеру) необходимо изменить значение open_basedir в настройках php.

На моем хостинге это выглядело так:

{WEBSPACEROOT}{/}{:}{TMP}{/}

я изменил его на

{WEBSPACEROOT}{/}{:}{TMP}{/}{:}{WEBSPACEROOT}{/../}

и это сработало.

person user3190433    schedule 31.12.2016

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

find <laravel_project_path> -type d -exec chmod 755 {} \;

find <laravel_project_path> -type d -exec chmod ug+s {} \;

find <laravel_project_path> -type f -exec chmod 644 {} \;

chown -R www-data:www-data <laravel_project_path>

chmod -R 777 <laravel_project_path>/storage

chmod -R 777 <laravel_project_path>/bootstrap/cache/

find <laravel_project_path>/vendor -type f -exec chmod 664 {} \;
person Dasun Tharanga    schedule 21.04.2021