У меня есть проект Laravel, который я скопировал со своего сервера Ubuntu, и теперь я пытаюсь запустить его на своей локальной машине (XAMPP на Mac). Я боролся с этим уже несколько дней, и я чувствую, что схожу с ума.
Когда я вставляю свой проект в папку XAMPP htdocs, я получаю эту ошибку:
View [welcome] not found
Какой php artisan cache:clear заставляет это исчезнуть, тогда я получаю эту ошибку:
The bootstrap/cache directory must be present and writable
Затем я делаю это, php artisan cache:clear, который выдает новую ошибку:
Class view does not exist
Затем после этого, независимо от того, что я делаю в терминале или просматриваю веб-браузер, я всегда получаю сообщение об ошибке
Class view does not exist
Потом я попробовал composer update, все та же ошибка ..... что я делаю не так?
Это был кошмар.
Это на Mac.
Используйте Laravel Valet. XAMPP - отстой TBH.
Попробуйте удалить папку vendor, затем запустите composer install
проверьте Illuminate\View\ViewServiceProvider::class, в confi/app.php
php artisan config: ясно, попробуйте. также не забывайте, что вам нужно получить доступ к общей папке корневой папки laravel
попробуйте php artisan view:clear
Не могли бы вы поделиться настройками конфигурации XAMP?
@IbrahimShendy Я удалил папку vendor и установил композитор, теперь я получаю эту ошибку: The bootstrap/cache directory must be present and writable. Затем я сделал sudo chmod -R 777 bootstrap и получил ту же ошибку обратно View [welcome] not found
@ user979331 ну это уже другая ошибка. Как насчет изменения разрешений каталога просмотра? resources/view/, может быть, и resources
Я пробовал это, не сработало
@ user979331 Попробуйте: php artisan config:clear. Также, если это не сработало, попробуйте следующее: php artisan cache:clear, php artisan config:cache. Это может решить эту проблему.
запустить composer dumpautoload
@ user979331: Вы проверили содержимое ваших storage/framework/cache/data и storage/framework/view, чтобы узнать, действительно ли они очищаются вашими ремесленными командами?
@ user979331 Привет, можешь связаться со мной здесь и поделиться со мной проектом
Какую версию Laravel вы используете? 5.3? 5.6? 5.3 Полагаю. Каждая новая версия более точно вылавливает конкретные ошибки. Также убедитесь, что в вашем файле .env нет значения с пробелом, и убедитесь, что в файле config/app.php нет пропущенной запятой. Это может быть создано по многим причинам. Отметьте этот Решение проблем на Github, чтобы увидеть больше причин.






В прошлый раз я проверил, что Laravel работает не на XAMPP, а на PHP, установленном при установке XAMPP, поэтому проект можно сохранить где угодно на компьютере.
Учитывая это, вам нужно будет просто иметь активную установку PHP, а затем вы скопируете только соответствующие файлы проекта на новый компьютер (те файлы, которые вы получите, когда разместите свой проект на GitHub). У него нет проблем с кешем, все, что вам нужно сделать после этого, - это
php artisan key:generate
затем composer install или composer update, чтобы получить пакеты поставщика из Интернета
Мои деньги сейчас идут на выбор соответствующих файлов и переустановку с ними.
По моей собственной установке при смене компьютера это список, который вам придется скопировать

chmod -R 777 storage/
Если у вас есть другой пользователь для apache2 (обычно www-data), также выполните:
chown -R www-data storage/
Вы также можете проверить, работает ли он со встроенным сервером:
php artisan serve
Я получил эту ошибку: chown: www-data: недопустимое имя пользователя
никогда не используйте 777, это крайне плохая практика.
@RayA Я знаю. Он только пытается запустить приложение локально, поэтому наличие папки 777 на локальном хосте не имеет большого значения. Вместо того, чтобы просто сказать «это плохая практика», вы могли бы на самом деле расширить и объяснить OP, почему это плохая практика. Потому что кажется, что вы просто набираете ответ, в котором написано «777», и копируете / вставляете свой «плохой опыт» для некоторых голосов.
@eselskas, я могу понять ваше разочарование тем, что я сказал, что это плохая практика, и, насколько вам известно, я не копировал / вставлял его, но ради помощи, вот почему разрешение 777 означает, что каждый пользователь может доступ, запись, удаление, обновление файлов, содержащихся в этом каталоге, без проблем, если злонамеренные пользователи получают доступ к этому файлу, он / она может загружать любые файлы и запускать их, что поставит под угрозу безопасность сервера.
Вы можете создать файл .htaccess и добавить данные ниже в файл .htaccess.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
После создания файла .htaccess установите корневой путь laravel в терминале и запустите команду ниже в терминале
php artisan serve
Поскольку ваш Apache уже обслуживает, у вас есть только проблемы с разрешением. А поскольку вы используете Mac, имя пользователя и группа по умолчанию в Apache conf - _www для Mac, а не www-data для Ubuntu. Вы можете увидеть это в файле httpd.conf:
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www
</IfModule>
Теперь используйте терминал, войдите в каталог вашего проекта, скажем, cd /var/www/laravel-project1, и убедитесь, что группа _www (или пользователь тоже в некоторых случаях логики среды вашего приложения) имеет доступ (чтение и запись) к:
Все общедоступные каталоги и подкаталоги, содержащие активы, если у вас есть.
sudo chgrp -R _www public
sudo chmod -R 774 public
Каталог хранилища и подкаталоги, указанные здесь (storage/framework -> all, storage/logs -> all, storage/app -> только каталог public), а также каталог и файлы bootstrap / cache
sudo chgrp -R _www storage/framework storage/logs storage/app/public bootstrap/cache
sudo chmod -R 774 storage/framework storage/logs storage/app/public bootstrap/cache
Это должно избавить вас от всех проблем с разрешениями на доступ к страницам.
НО теперь, если при использовании созданных файлов страницы, сеансов и журналов возникают другие проблемы, может возникнуть последняя проблема с разрешением, которая называется UMask, которая сообщает Apache или веб-серверу, например Nginx, какое разрешение назначить вновь созданному каталогу или файлы для пользователя _www. По умолчанию Apache umask - это 0002, что дает 0775 для каталога и 0664 для нового файла. Если когда-либо значение umask было изменено на 0022, как это используется по умолчанию в Nginx, то эквивалентных разрешений 0755 или 0644 будет недостаточно для вашей группы Apache _www для записи в каталоги с группой _www. Таким образом, вы можете сменить umask на 0002 или сменить владельца на _www:
sudo chown -R _www public storage/framework storage/logs storage/app/public
Так что это зависит от ваших конфигов.
Я столкнулся с той же проблемой, что и вы, но не переходил с ubuntu на mac, это был с windows на linux, я был в полном беспорядке, но меня спас только git, он может причинить вам немного боли, но он идет чтобы спасти тебя в будущем. Вот шаги, которые вам нужно сделать.
git init --bare.git clone.Каталог, который вы создадите в Mac, может находиться внутри htdocs файла xammp. Я знаю, что это может оказаться болезненной задачей, но оно того стоит.
Источники для получения дополнительной информации: git-scmПолучение Git на сервере
Если вам понадобится дополнительная помощь, я буду более чем счастлив обсудить это с вами.
Перейдите в папку своего проекта и добавьте эти команды с терминала.
sudo chmod -R 777 your_projrct/storage
sudo chmod -R 777 your_projrct/bootstrap/cache
sudo chown -R :www-data your_project
sudo chmod -R g+s your_project
затем php artisan key:generate и composer install
Никогда не используйте КОГДА-ЛИБО chmod 777, это серьезное нарушение безопасности
@Amaury для чтения / записи в хранилище и папке кеша необходимо дать разрешение 777. есть другой способ?
Для всех папок в хранилище / вам необходимо установить владельца для вашего пользователя apache, а затем дать этому пользователю (а не кому-либо) права на запись в файлы, например: 644. Подробнее см. мой ответ
Примечание: следующее работает для Laravel 5.x, но также и для 4.2, не тестировалось с другими версиями.
Почему бы не использовать Git? (Если вы не знакомы с ним, взгляните на официальный сайт, в Интернете также есть множество руководств)
Обычно копирование и вставка целых проектов - не лучшая идея из-за некоторых прав доступа к файлам / каталогам и других не очень хороших вещей.
Вот что я сделал, чтобы переместить свой проект из Windows на свой сервер Ubuntu:
Сделать
composer dump-autoload
composer install
Чтобы перенести свою базу данных, выполните
php artisan migrate
и если у вас есть посев, сделайте это
php artisan db:seed
Затем, если у вас есть проблемы с разрешениями файлов / папок, не выполняйте КОГДА-ЛИБОchmod -R 777 path/, если вам нужно сделать это для решения вашей проблемы, вы делаете что-то не так.
Эта команда предоставляет всем права доступа ко всем файлам и папкам в папке path.
В вашем случае вам необходимо сделать следующее:
Сначала найдите, какое имя пользователя использует apache для запуска сервера (обычно это www-данные).
ps aux | egrep '(apache|httpd)'
Затем измените владельца каталога проекта на пользователя apache (пример для пользователя apache www-data)
sudo chown -R www-data:www-data /var/htdocs/your-project/
Установить права доступа к папкам
sudo find /var/htdocs/your-project/ -type d -exec chmod 755 {} \;
Установить права доступа к файлам
sudo find /var/htdocs/your-project/ -type f -exec chmod 644 {} \;
Чтобы исправить проблемы с загрузкой / кешем и хранилищем / разрешениями, выполните
sudo chown -R www-data:www-data /var/htdocs/your-project/
Laravel 5.x
sudo chmod -R ug+rwx /var/htdocs/your-project/storage /var/htdocs/your-project/bootstrap/cache
Laravel 4.2
sudo chmod -R ug+rwx /var/htdocs/your-project/storage /var/htdocs/your-project/app/bootstrap/cache
Тогда у тебя все должно быть хорошо.
Поступая таким образом, вы можете легко перенести свой проект с одного компьютера на другой, не беспокоясь о исправлениях разрешений или чему-то еще.
Дополнительную информацию и источник для инструкций командной строки о разрешениях для файлов и папок см. В разделе Laravel 5 Files Folders Permission and Ownership Setup.
Для меня (при разработке на xampp, что я делаю для всех своих проектов) - я бы не рекомендовал помещать ваши материалы в папку htdocs. Laravel ожидает, что он не будет размещен в субфодлере, например. (локальный / мой-проект). Поэтому вам следует настроить виртуальный хост, чтобы он работал легко (например, my-project.test), что немного раздражает.
Простое решение - использовать команду php artisan serve, чтобы просто настроить локальный сервер на порт 8000.
Не забудьте запустить xampp для сервера mysql.
Уже были упомянуты некоторые типичные советы:
composer install (установите композитор, если еще не сделали)composer dump-autoloadphp artisan key:generatephp artisan migratephp artisan cache:clearОбычно вам не нужно устанавливать какие-либо права доступа к файлам afaik
Я просто попытался воспроизвести вашу проблему на своем Mac. Итак, я установил XAMPP с версией PHP 7.1.25, которая является эквивалентной версией моей локальной версии PHP.
Итак, я установил XAMPP и запустил сервер.
Загрузил мою папку проекта laravel с моего сервера ubuntu и скопировал ее в htdocs (XAMPP)
Когда я пытался запустить http: // локальный / мойпроект / общедоступный, он показывает исключение, например
There is no existing directory at "/Applications/XAMPP/xamppfiles/htdocs/myproject/storage/logs" and its not buildable: Permission denied
Затем я дал полное разрешение на папку хранилища
chmod -R 777 storage
И сменил владельца для файлов в папке myproject.
Здесь я только что проверил право собственности на каталог приборная доска, который работает отлично и с учетом то же право собственности пользователя каталога myproject.
chown -R root:admin .
Затем следующие команды
composer install
php artisan cache:clear
php artisan view:clear
php artisan route:clear
После этого мой код laravel работает отлично.
Class view does not exist
вероятно, проблема владения каталогом
chmod 777 может работать, но пожалуйста не использует его или не использует и как можно скорее измените разрешения, чтобы никто не мог полностью контролировать файлы и папки.
Поскольку OP ищет решение, я думаю, он может использовать 777 для всего каталога проекта. Затем, если это действительно проблема с разрешением, он вернется к безопасному разрешению.
Я думаю, что разговор о 777 бессмыслен, как сказал @KeitelDOG. и, кроме того, OP пытается переместить его в xampp, что никогда не рекомендуется для производства
@Shobi см. Мой ответ ниже, и вы увидите безопасный способ установки владельца, группы, чтения и записи для них с помощью 774 или 664, _www для apache Mac, настройки umask и т. д. Я использовал правильные разрешения для файлов более 5 лет сейчас. Но поскольку он находится в среде разработки, он может просто временно перейти к 777, чтобы убедиться, что его проблема не связана с правами доступа к файлу. И, кстати, он переносит его на Local Mac, так что производство здесь вообще не применяется.
когда пользователь / группа www-data неизвестны; в большинстве дистрибутивов Linux используется apache:
chown -R apache:apache dirname
в то время как на OSX это будет пользователь / группа _www:
chown -R _www:_www dirname
Добавление текущего пользователя в группу _www может в целом облегчить жизнь.
Чтобы изолировать ваши проблемы:
composer installphp artisan serve. Таким образом вы исключите проблему с xampp.localhost:8000Если у вас уже есть вся кодовая база на вашем локальном компьютере (включая папку поставщика), пропустите шаги 1 и 2. Шаг 3 не повредит, но вы, вероятно, можете пропустить и его.
Как только вы все заработаете, переключитесь на xampp.
composer update
composer dumpautoload
php artisan cache:clear
А потом просто настройте виртуальный хост
Отредактируйте файл hosts и перенаправьте все запросы из вашего домена на 127.0.0.1:
127.0.0.1 lara.vel
Отредактируйте \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf:
<VirtualHost lara.vel:80>
DocumentRoot "C:\xampp\htdocs\laravel/public"
ServerAdmin laravel.dev
<Directory "C:\xampp\htdocs\laravel">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Сделанный! Откройте свой домен в браузере, вы увидите там свой проект!
Другой способ прост: просто запустите artisan serve.
Please vote up if you found this answer useful.
Я думаю, что если вы скопировали проект из Ubuntu, это проблема с разрешениями.
сначала получите пользователей на вашем компьютере Mac, набрав это в терминале
users
затем скопируйте только что полученного пользователя (имя пользователя) и используйте его в этой команде
sudo chown -R username project-directory
затем проверьте наличие yourproject-directory/bootstrap/cache, если он не существует, создайте его. иначе запустите эту команду:
sudo chmod -R guo+w project-directory/bootstrap/cache
тогда
sudo chmod -R guo+w project-directory/storage
затем очистите автозагрузку композитора, кеш и конфигурацию с помощью команды artisan
composer dump-autoload
php artisan cache:clear
php artisan view:clear
php artisan route:clear
теперь попробуйте запустить проект, если проблема все еще существует,
вам нужно проверить config/app.php, если он содержит Illuminate\View\ViewServiceProvider::class
поставщик услуг просмотра.
если его там нет, добавь это
Можете ли вы поделиться более подробной информацией о том, в какой системе вы пробуете ее Windows или Mac?