Laravel Homestead php-7 "php5-fpm: непризнанный сервис" на бродяжничестве
При попытке использовать версию php-7 Laravel Homestead в установке для каждого проекта, я вижу эту ошибку во время vagrant up
:
php5-fpm: unrecognized service
Я пробовал vagrant destroy
и переустановил поле Vagrant, но он все еще возвращается к этой ошибке.
Я не получил ошибку при использовании Homestead глобально.
Как это можно исправить?
Ответы
Ответ 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.
Примечание. Это не постоянное решение, если вы выполняете команду выделения, брандмауэр попытается настроить сам по себе и перезапишет первую строку.