Переместить проект Laravel с сервера Ubuntu на локальный XAMPP - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть проект Laravel, который я скопировал с моего сервера Ubuntu, и теперь я пытаюсь запустить его на своей локальной машине (XAMPP на Mac). Я боролся с этим уже несколько дней и чувствую, что схожу с ума..

Когда я вставляю свой проект в папку XAMPP htdocs, я получаю эту ошибку:

Просмотр [добро пожаловать] не найден

Который php artisan cache:clear делаеткоторые уходят, тогда я получаю эту ошибку:

Каталог начальной загрузки / кэша должен присутствовать и быть доступным для записи

Затем я делаю это, php artisan cache:clear, что дает мненовая ошибка:

Представление класса не существует

Тогда после этого, что бы я ни делал в терминале или в браузере, я всегда получаю ошибку

Представление класса не существует

Тогда я попытался composer update все еще та же ошибка ..... что я делаю не так?

Этобыл кошмаром.

Ответы [ 13 ]

0 голосов
/ 14 декабря 2018

Прежде всего:

composer update
composer dumpautoload
php artisan cache:clear

А затем просто настройте виртуальный хост

1.Создайте локальный домен для своего приложения

Редактируйте hosts файл и перенаправьте все запросы из вашего домена на 127.0.0.1:

127.0.0.1   lara.vel

2.Настроить виртуальный хост

Редактировать \ 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.

Пожалуйста, проголосуйте, еслиВы нашли этот ответ полезным.

0 голосов
/ 14 декабря 2018

Я думаю, что если вы скопировали проект из 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 поставщика услуг просмотра.

, если его там нет, поэтому добавьте его

0 голосов
/ 14 декабря 2018

когда пользователь / группа www-data неизвестны;большинство дистрибутивов Linux используют apache:

chown -R apache:apache dirname

при OSX, это будет пользователь / группа _www:

chown -R _www:_www dirname

добавление текущего пользователя в группу _www может вообще облегчить жизнь.

0 голосов
/ 14 декабря 2018

Чтобы изолировать ваши проблемы:

  1. Загрузите код в репозиторий (bitbucket или github)
  2. Клонируйте репозиторий в локальную среду
  3. Запустите composer install
  4. Выполнить php artisan serve.Таким образом вы исключаете xampp как проблему.
  5. В вашем браузере перейдите на localhost:8000

Если у вас уже есть вся ваша кодовая база в вашем локальном ящике (включая папку поставщика)затем пропустите шаги 1 и 2. Шаг 3 не повредит, но вы, вероятно, тоже можете это пропустить.

Как только все заработает, переключитесь на xampp.

0 голосов
/ 14 декабря 2018

Для меня (при разработке на xampp, что я делаю для всех своих проектов) - я бы не советовал помещать ваши вещи в папку htdocs.Laravel ожидает, что он не будет размещен на субфодлере, например (localhost / my-project).Поэтому вы должны настроить виртуальный хост, чтобы он легко работал (например, my-project.test), что немного раздражает.

Простое решение - использовать команду php artisan serve для простой настройки локального сервера на порту 8000.

Не забудьте запустить xampp для сервера mysql.

Некоторые типичные советы уже упоминались:

  • удалить папку поставщика и запустить composer install (установить композитор, если у вас его нет)
  • запустить composer dump-autoload
  • запустите php artisan key:generate
  • конечно, не забудьте миграцию php artisan migrate
  • и очистите ваш полный кэш php artisan cache:clear

Обычно вам не нужно устанавливатьлюбые права доступа к файлам afaik

0 голосов
/ 14 декабря 2018

Я только что попытался воспроизвести вашу проблему на моем Mac.Итак, я установил XAMPP с версией PHP 7.1.25, которая является эквивалентной версией моей локальной версии PHP

Итак, я установил XAMPP и запустил сервер.

Загрузил папку моего проекта laravel с моего сервера Ubuntu и скопировал ее в htdocs (XAMPP)

Когда я пытался запустить http://localhost/myproject/public, это показывает исключение, подобное

There is no existing directory at "/Applications/XAMPP/xamppfiles/htdocs/myproject/storage/logs" and its not buildable: Permission denied

Затем я дал полное разрешение на папку хранения

chmod -R 777 storage

И сменил владельца на файлы внутри папки myproject.

Здесь я только что проверил владение каталогом dashboard , который работает отлично и получил то же владение пользователем каталога 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

, вероятно, проблема владения каталогом

0 голосов
/ 13 декабря 2018

Перейдите в папку вашего проекта и добавьте эти команды из терминала

sudo chmod -R 777 your_projrct / storage

sudo chmod -R 777 your_projrct /начальная загрузка / кэш

sudo chown -R: www-data your_project

sudo chmod -R g + s your_project

затем php artisan key:generate и composer install

0 голосов
/ 13 декабря 2018

Примечание. Следующее работает для Laravel 5.x, но также и для 4.2, не тестировалось с другими версиями

Почему не используется Git?(Если вы не знакомы с ним, посмотрите на официальный сайт , в Интернете также есть тонны учебников)

Обычно копирование целых проектов не является хорошимидея, из-за некоторых прав доступа к файлам / каталогам и других не очень хороших вещей.

Вот что я сделал, чтобы переместить мой проект с Windows на мой сервер Ubuntu:

  • Поместите свойпроект git (GitHub, GitLab или любой другой), файлы .gitignore, предоставляемые с приложениями Laravel, в большинстве случаев достаточно хороши
  • На новой машине клонируйте свой репозиторий
  • Сделайте

    composer dump-autoload
    composer install
    
  • Чтобы перенести вашу базу данных, выполните

    php artisan migrate
    

    и, если у вас есть посев, сделайте это

    php artisan db:seed
    

Тогда, если у вас проблемы с правами доступа к файлам / папкам, не КОГДА-ЛИБО не делайте chmod -R 777 path/, если вам нужно сделать это для решения вашей проблемы, вы делаетечто-то не так.Эта команда предоставляет все права всем пользователям для всех файлов и папок в папке path.

В вашем случае вам необходимо выполнить следующее:

  • Сначаланайдите, какое имя пользователя использует apache для запуска сервера (обычно это www-data)

    ps aux | egrep '(apache|httpd)'
    
  • Затем измените владельца каталога проекта на пользователя apache (пример для www-data apacheпользователь)

    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Настройка разрешения и владения

0 голосов
/ 12 декабря 2018

Я столкнулся с той же проблемой, что и вы, но не переходил с Ubuntu на Mac, это было из Windows в Linux, я был в полном беспорядке, но только мерзавец спас меня, это могло причинить вам немного боли, ноэто спасет вас в будущем.Вот шаги, которые вам нужно сделать.

  1. Создайте пустой репозиторий на Mac с помощью этой команды git init --bare.
  2. Клонируйте репозиторий в Ubuntu, используя git clone.
  3. Скопируйте ваш код laravel в клон, который вы сделали на шаге 2.
  4. Переместите файлы из Ubuntu в MAC.
  5. Протестируйте проект.

Каталог, который вы создадите в Mac, он может находиться внутри htdocs xammp.Я знаю, что это может быть болезненной задачей, но она того стоит.

Источники для получения дополнительной информации: git-scm Получение Git на сервере

Если вам нужна дополнительная помощь, я буду более чем рад обсудить это с вами.

0 голосов
/ 11 декабря 2018

Поскольку ваш Apache уже работает, у вас есть проблемы только с разрешениями.А поскольку вы используете Mac, имя пользователя и группа по умолчанию в Apache conf для Mac * _www, а для Ubuntu - www-data.Вы можете увидеть это в файле 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 -> все, storage/logs -> все, storage/app -> public только каталог), а также каталог начальной загрузки / кэш и файлы

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

Так что это зависит от ваших настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...