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

Laravel Homestead php-7 "php5-fpm: непризнанный сервис" на бродяжничестве

При попытке использовать версию php-7 Laravel Homestead в установке для каждого проекта, я вижу эту ошибку во время vagrant up:

php5-fpm: unrecognized service

Я пробовал vagrant destroy и переустановил поле Vagrant, но он все еще возвращается к этой ошибке.

Я не получил ошибку при использовании Homestead глобально.

Как это можно исправить?

4b9b3361

Ответ 1

Проблема заключалась в том, что пока box: laravel/homestead-7 был правильно установлен в Homestead.yaml, зависимость компоновщика для laravel/homestead все еще использовала версию php-5. Это означало, что сценарии инициализации для Vagrant в vendor/laravel/homestead были такими же, как для php-5, а не php-7.

Это можно исправить, используя определенную ветвь laravel/homestead для зависимости композитора.

В composer.json добавьте настраиваемый репозиторий для laravel/homestead:

"repositories": [
    {
        "type": "git",
        "url": "https://github.com/laravel/homestead"
    }
]

И требуется ветвь php-7 специально для laravel/homestead:

"require-dev": {
    "laravel/homestead": "dev-php-7"
}

Затем composer update и повторная настройка поля Vagrant исправит проблему.

UPDATE

laravel/homestead теперь имеет PHP 7.0 по умолчанию, а старый ветвь php-7 больше не существует. Чтобы решить эту проблему, вам просто нужно обновить до последней версии laravel/homestead через composer.json.

Ответ 2

Для быстрого исправления я нашел этот ответ из laracasts очень полезен:

cd ~/Homestead && git pull && vagrant destroy && vagrant box update && vagrant up

Ответ 3

Чтобы немного подробнее описать подход "просто уничтожить его и построить снова"... Я одобряю это в отношении различных инструкций по обновлению Homestead на месте с PHP 5.6 до PHP 7, которые плавают по сети - это не так 't занимают очень много времени, а также все чувствует себя "чище", когда вы закончили.

(Конечно, если вы внесли изменения в свой php.ini или какое-либо другое программное обеспечение, вам нужно будет сделать это снова.)

Подготовка

  • ваши проекты должны быть в каталоге вашего хост-компьютера, который используется совместно с коробкой Vagrant, а не только в коробке Vagrant, поскольку это должно быть протерто
  • vagrant ssh в вашу виртуальную машину и поместите mysqldump каждой базы данных сайта в каталог сайта, например. mysqldump -u root -p [dbname] > [dbname]-backup.sql (по умолчанию усадьба MySQL root pw secret.)
  • возьмите резервную копию всего (например, Mac Time Machine и/или сделайте то, что я делаю, и сохраните ваши проекты в папке Dropbox). Конечно, ваш репозиторий git хранится где-то безопасно?
  • Пользователи Virtualbox: никакого вреда при экспорте всей коробки в случае, если вы застряли, и хотите перейти к ней (сделать снимок недостаточно, так как любой будет уничтожен при уничтожении VM).

Процесс

  • vagrant halt (если вы еще этого не сделали)
  • vagrant destroy [VM id] Добавление идентификатора является предупреждением об уничтожении неправильного поля. Используйте vagrant global-status, чтобы получить список ваших полей; используйте шестнадцатеричный код из 7 символов в первом столбце.
  • в ~/Homestead на вашем ПК /Mac git pull origin master (как упоминается в другом ответе, нет отдельной ветки PHP7)
  • вы можете повторно запустить bash script, чтобы создать чистый файл Homestead.yaml и т.д. - bash init.sh, но файлы, которые он копирует, - все шаблоны, поэтому вы также можете не делать этого и сохранять свой предыдущий версии.
  • vagrant box add laravel/homestead (теперь мы вернулись к стандартным инструкциям по установке. Это займет около 10 минут на подключении VDSL.
  • edit ~/.homestead/Homestead.yaml на вашем Mac/ПК.

Вот пример сопоставления папок, если вы смущены документами:

folders:
    - map: ~/Dropbox/websites-homestead
      to: /home/vagrant/sites

sites:
    - map: site1.app
      to: /home/vagrant/sites/site1/public
    - map: site2.app
      to: /home/vagrant/sites/site2/public

databases:
    - site1
    - site2

Итак... мой фактический код живет в ~/Dropbox/websites-homestead/site1 и /site 2 на моем компьютере, и я сопоставил их общий родительский каталог с /home/vagrant/sites на виртуальной машине. Homestead создаст пустые базы данных с указанными вами именами.

  • vagrant up (это предусмотрено)
  • vagrant ssh
  • cd sites (вы сможете увидеть свой код)
  • восстановить базы данных с помощью mysql -u root -p site1 < site1-backup.sql
  • Предоставление вам /etc/hosts записей на вашем компьютере, вы должны иметь возможность просматривать ваш сайт. Проверьте файл .env, если он не может подключиться к базе данных.

Теперь вы должны это сделать:

$sudo service php7.0-fpm status
* php-fpm7.0 is running

$php -v
PHP 7.0.2-4+deb.sury.org~trusty+1 (cli) ( NTS )
[...]

Ответ 4

откройте /etc/nginx/sites-available/your_site_conf, затем измените эту строку:

fastcgi_pass: /var/run/php5-fpm.sock;

в

fastcgi_pass: /var/run/php/php7.0-fpm.sock;

И затем перезапустите nginx.

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