У меня есть задача реализовать новые функции в старом рабочем проекте Laravel. Проблема в том, что нет технической поддержки, которая могла бы сказать мне, как ее запустить. Никакой документации или readme. У меня мало опыта работы с Laravel, поэтому вот что я сделал. Я загрузил весь проект, включая файл .env, по FTP и поместил его в htdocs XAMPP, запустил Apache и MySQL. Я запускаю установку npm, установку композитора, импортирую БД в localhost/phpmyadmin. Я выполнил миграцию php artisan. Затем php artisan db:seed (это заняло слишком много времени, 8-10 минут, а размер базы данных - 16 МБ), но без ошибок. Когда я запускаю сервер, я получаю сообщение Сервер разработки Laravel запущен: http://127.0.0.1:8000 но всегда появляется ошибка: Упс, похоже, что-то пошло не так. В консоли Не удалось загрузить ресурс: сервер ответил со статусом 500 (внутренняя ошибка сервера). Думаю, не удалось создать соединение с БД. Кроме того, когда я попробовал установить npm, у меня появилось много ошибок, но мне удалось их исправить, используя более старую версию Node.
Пожалуйста, помогите мне запустить проект.
Tech. info
Laravel Framework 5.4.36
Node version: 12.12.12
PHP version: 7.3.0
композитор.json
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.6.4",
"dimsav/laravel-translatable": "7.*",
"geoip2/geoip2": "~2.0",
"intervention/image": "^2.4",
"laravel/framework": "5.4.*",
"laravel/tinker": "~1.0",
"laravelcollective/html": "^5.2.0",
"maatwebsite/excel": "~2.1.0",
"matthiasmullie/minify": "^1.3",
"mockery/mockery": "0.9.*",
"torann/geoip": "^1.0"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~5.7"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/Http/Helpers.php"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"scripts": {
"post-root-package-install": [
"php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true
}
}
Когда я пытаюсь открыть http://127.0.0.1:8000/, я все равно получаю сообщение «Упс, похоже, что-то пошло не так». Я включил режим отладки, очистил кеш и получил эти ошибки. Что их вызывает? Проект исходит непосредственно из действующего производства.
Упс, похоже, что-то пошло не так. И в режиме DEBUG эти ошибки
(2/2) ErrorException
Undefined index: 127.0.0.1 (View: D:\DEV\XAMPP\htdocs\BeShared\resources\views\front\home_2023.blade.php)
in d3187463eae345eb4dbf0390f4d742b104703265.php line 27
at CompilerEngine->handleViewException(object(ErrorException), 1)
in PhpEngine.php line 44
at PhpEngine->evaluatePath('D:\\DEV\\XAMPP\\htdocs\\BeShared\\storage\\framework\\views/d3187463eae345eb4dbf0390f4d742b104703265.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'canonical' => 'http://127.0.0.1:8000', 'services' => object(Collection), 'projects' => object(Collection), 'news' => object(Collection), 'current_page' => 'index', 'current_subpage' => 'home', 'request' => object(Request), 'admin' => null, 'pages_header' => object(Collection), 'pages_footer' => object(Collection), 'seo_og_type' => 'article', 'seo_title' => 'Full Service Digital Agency | BeShared', 'seo_description' => 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'social_image' => 'http://127.0.0.1:8000/img/logo-social.jpg', 'footer_logos' => object(Collection), 'career_positions' => object(Collection), 'all_services' => object(Collection), 'cache_buster' => '20200411', 'currentDomain' => array('lang' => 'en', 'phone' => '+39 320 294 8061', 'phone_link' => '+393202948061', 'country' => 'United Kingdom', 'tawkto' => array('property' => '5bdc5798a5b4b877204268cb', 'widget' => 'default'), 'show_in_header_langs' => true, 'show_for_domain' => array('beshared.bg', 'beshared.eu'), 'currentLink' => 'https://beshared.eu', 'active' => true, 'hreflang' => 'en')))
in CompilerEngine.php line 59
at CompilerEngine->get('D:\\DEV\\XAMPP\\htdocs\\BeShared\\resources\\views/front/home_2023.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'canonical' => 'http://127.0.0.1:8000', 'services' => object(Collection), 'projects' => object(Collection), 'news' => object(Collection), 'current_page' => 'index', 'current_subpage' => 'home', 'request' => object(Request), 'admin' => null, 'pages_header' => object(Collection), 'pages_footer' => object(Collection), 'seo_og_type' => 'article', 'seo_title' => 'Full Service Digital Agency | BeShared', 'seo_description' => 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'social_image' => 'http://127.0.0.1:8000/img/logo-social.jpg', 'footer_logos' => object(Collection), 'career_positions' => object(Collection), 'all_services' => object(Collection), 'cache_buster' => '20200411', 'currentDomain' => array('lang' => 'en', 'phone' => '+39 320 294 8061', 'phone_link' => '+393202948061', 'country' => 'United Kingdom', 'tawkto' => array('property' => '5bdc5798a5b4b877204268cb', 'widget' => 'default'), 'show_in_header_langs' => true, 'show_for_domain' => array('beshared.bg', 'beshared.eu'), 'currentLink' => 'https://beshared.eu', 'active' => true, 'hreflang' => 'en')))
in View.php line 137
(1/2) ErrorException
Undefined index: 127.0.0.1
in d3187463eae345eb4dbf0390f4d742b104703265.php line 27
at HandleExceptions->handleError(8, 'Undefined index: 127.0.0.1', 'D:\\DEV\\XAMPP\\htdocs\\BeShared\\storage\\framework\\views\\d3187463eae345eb4dbf0390f4d742b104703265.php', 27, array('__path' => 'D:\\DEV\\XAMPP\\htdocs\\BeShared\\storage\\framework\\views/d3187463eae345eb4dbf0390f4d742b104703265.php', '__data' => array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'canonical' => 'http://127.0.0.1:8000', 'services' => object(Collection), 'projects' => object(Collection), 'news' => object(Collection), 'current_page' => 'index', 'current_subpage' => 'home', 'request' => object(Request), 'admin' => null, 'pages_header' => object(Collection), 'pages_footer' => object(Collection), 'seo_og_type' => 'article', 'seo_title' => 'Full Service Digital Agency | BeShared', 'seo_description' => 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'social_image' => 'http://127.0.0.1:8000/img/logo-social.jpg', 'footer_logos' => object(Collection), 'career_positions' => object(Collection), 'all_services' => object(Collection), 'cache_buster' => '20200411', 'currentDomain' => array('lang' => 'en', 'phone' => '+39 320 294 8061', 'phone_link' => '+393202948061', 'country' => 'United Kingdom', 'tawkto' => array('property' => '5bdc5798a5b4b877204268cb', 'widget' => 'default'), 'show_in_header_langs' => true, 'show_for_domain' => array('beshared.bg', 'beshared.eu'), 'currentLink' => 'https://beshared.eu', 'active' => true, 'hreflang' => 'en')), 'obLevel' => 1, '__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'canonical' => 'http://127.0.0.1:8000', 'services' => object(Collection), 'projects' => object(Collection), 'news' => object(Collection), 'current_page' => 'index', 'current_subpage' => 'home', 'request' => object(Request), 'admin' => null, 'pages_header' => object(Collection), 'pages_footer' => object(Collection), 'seo_og_type' => 'article', 'seo_title' => 'Full Service Digital Agency | BeShared', 'seo_description' => 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'social_image' => 'http://127.0.0.1:8000/img/logo-social.jpg', 'footer_logos' => object(Collection), 'career_positions' => object(Collection), 'all_services' => object(Collection), 'cache_buster' => '20200411', 'currentDomain' => array('lang' => 'en', 'phone' => '+39 320 294 8061', 'phone_link' => '+393202948061', 'country' => 'United Kingdom', 'tawkto' => array('property' => '5bdc5798a5b4b877204268cb', 'widget' => 'default'), 'show_in_header_langs' => true, 'show_for_domain' => array('beshared.bg', 'beshared.eu'), 'currentLink' => 'https://beshared.eu', 'active' => true, 'hreflang' => 'en')))
in d3187463eae345eb4dbf0390f4d742b104703265.php line 27
Также из-за установки композитора я получаю сообщение: «Нечего устанавливать», но затем возникает какая-то ошибка. Может быть вот в чем проблема:
composer install
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Nothing to install, update or remove
Package phpoffice/phpexcel is abandoned, you should avoid using it. Use phpoffice/phpspreadsheet instead.
Generating autoload files
Method Illuminate\Foundation\ComposerScripts::postAutoloadDump is not callable, can not call post-autoload-dump script
> @php artisan package:discover
There are no commands defined in the "package" namespace.
Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1
Я считаю, что .env уже настроен для dev APP_ENV=local APP_KEY=base64:fQodpEiTOej5yAYMHWVsV0jvssbgTXbbYa8DN0= APP_DEBUG=false APP_LOG_LEVEL=debug APP_URL=localhost DB_CONNECTION=mysql .0.0.1 DB_PORT=3306 DB_DATABASE=soci15sm_newsite DB_USERNAME=soci15sm_newsite DB_PASSWORD =socipassword BROADCAST_DRIVER=журнал CACHE_DRIVER=массив SESSION_DRIVER=файл QUEUE_DRIVER=sync REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525
Измените на APP_DEBUG=true
Спасибо. После удаления кеша я вижу ошибки после APP_DEBUG=true, но мне все еще интересно, что их вызывает. Вы можете проверить ошибки выше.
перейдите к serviceController и найдите переменную оператора, попробуйте отладить с помощью dd($operator);
и добавьте то, что вы нашли, в комментарий
Переменная $operator не найдена в ServicesController
Ваш код compact('type', 'operator', 'query', 'boolean')
. Метод Compact() принимает переданные ему строки и генерирует массив из этих строк и связанных с ними переменных. Эквивалентный (и предпочтительный способ, т. е. не использовать compact()
) — написать ['type' => $type, 'operator' => $operator, 'query' => $query, 'boolean' => $boolean]
. Если какая-либо из этих четырех переменных отсутствует в вашем коде до вызова compact()
, вы получите ошибку, которую видите. Однако вам нужно отладить свой код и справиться с этим 🙂
не уверен, поможет это или нет, но, возможно, вы захотите что-то сделать в будущем. Несколько лет назад я был главой проекта Laravel, и я столкнулся с аналогичной проблемой, поэтому, чтобы помешать мне выполнять задачу, которую вы выполняете каждый раз, когда мне нужно было реализовать новую функцию, я использовал Git в качестве контроллера версий и средства развертывания. Я также использовал выделенную машину в качестве искусственной среды для тестирования. - Запускайте все обновления и контроль версий через Git. - Запускайте все в созданной среде, «зеркальной» производственной среде (сейчас я бы это сделал с помощью виртуальной машины).
Я исправил это благодаря моему бывшему коллеге Мишо, который наконец нашел проблему. Кажется, мой проект является многодоменным (мультитенантным), и ему просто нужно было добавить localhost в начало доменов.php Спасибо, Мишо!
"localhost" => [
'lang' => 'bg',
'phone' => '+359/878 788 469',
'phone_link' => '+359/878 788 469',
'country' => 'Bulgaria',
'tawkto' => [
"beshared.bg" => [
'lang' => 'bg',
'phone' => '+359/878 788 469',
'phone_link' => '+359/878 788 469',
'country' => 'Bulgaria',
'tawkto' => [
'property' => '5b9a47dbc666d426648ab989',
'widget' => '1cnmdqpuu',
],
'show_in_header_langs' => false,
'show_for_domain' => 'beshared.bg',
'currentLink' => 'https://beshared.bg',
'active' => true,
'hreflang' => 'bg-bg',
],
"beshared.eu" => [
'lang' => 'en',
'phone' => '+39 320 294 8061',
'phone_link' => '+393202948061',
'country' => 'United Kingdom',
'tawkto' => [
'property' => '5bdc5798a5b4b877204268cb',
'widget' => 'default',
],
'show_in_header_langs' => true,
'show_for_domain' => ['beshared.bg', 'beshared.eu'],
'currentLink' => 'https://beshared.eu',
'active' => true,
'hreflang' => 'en',
],
"it.beshared.eu" => [
'lang' => 'it',
'phone' => '+39 320 294 8061',
'phone_link' => '+393202948061',
'country' => 'Italy',
'tawkto' => [
'property' => '5bdc5798a5b4b877204268cb',
'widget' => 'default',
],
'show_in_header_langs' => true,
'show_for_domain' => ['beshared.bg', 'beshared.eu'],
'currentLink' => 'https://it.beshared.eu',
'active' => true,
'hreflang' => 'it',
],
откройте файл
.env
и изменитеAPP_ENV=production
наAPP_ENV=local
, что выведет приложение из производственного режима и поможет в отладке. Я бы рекомендовал запуститьphp artisan serve
в вашей оболочке вместо использования xampp, поскольку Laravel в основном обслуживается из каталогаpublic
, и у xampp могут возникнуть проблемы с этим. Затем узнайте больше о Laravel, поскольку он не предназначен для запуска из общедоступного корня сети, что может сбить с толку и затруднить работу тех, кто не знаком с Laravel; есть некоторая кривая обучения...