Im использует Laravel 5.3 в Homestead с Vagrant 1.8.7, работающим на VirtualBox.
Мне нужно включить некоторые расширения php.
Я знаю, что я мог бы сделать ssh в поле и отредактировать php.ini, чтобы включить расширение, но это похоже на очень анти-бродячий способ сделать это.
Я хочу сказать, что Vagrant предоставил ящик с определенными расширениями php, чтобы я мог просто вызвать vagrant up --provision
и поле будет готово к работе (вроде бы бродяжничать правильно?)
Итак, как мы можем автоматически активировать расширения php в Homestead на бродяжничестве?
После некоторого возиться, ниже, что я придумал. Я не делаю никаких заверений в том, что это правильный способ сделать это только в том случае, если в моем случае это работает:
Найдите after.sh
который был сгенерирован при установке усадьбы . Для меня, на Mac El Capitain, файл создается в ~/.homestead/after.sh
, я полагаю, что есть .bat
в аналогичном месте в окнах.
Не делайте ошибку при редактировании ~/Homestead/src/stubs/after.sh
, это файл шаблона из установки homestead, а не ваша фактическая сгенерированная копия.
after.sh
Добавьте ниже строки в after.sh
(это весь мой файл, только первые 5 строк комментариев были в файле по умолчанию):
#!/bin/sh # If you would like to do some extra provisioning you may # add any commands you wish to this file and they will # be run after the Homestead machine is provisioned. # in the below --assume-yes is to avoid confirms [y/N] # DEBIAN_FRONTEND=noninteractive is to avoid a big menu asking if it's ok to # overwrite the php.ini file, may make --assume-yes redundant, not sure # run apt-get update first, without it I was getting errors not finding the extensions sudo DEBIAN_FRONTEND=noninteractive apt-get --assume-yes update # load any extensions you like here sudo DEBIAN_FRONTEND=noninteractive apt-get --assume-yes install php-xdebug sudo DEBIAN_FRONTEND=noninteractive apt-get --assume-yes install php7.0-ldap
Если вы точно не знаете точное имя для расширения, которое вам нужно (я не sudo apt-cache search php7-*
), вы можете использовать sudo apt-cache search php7-*
или аналогичный список доступных
Теперь, если у вас есть усадьба, в терминале, cd
к вашему дину Homestead, для меня cd ~/Homestead
а затем запустить vagrant destroy
В то время как внутри /Homestead
бежит vagrant up --provision
Чтобы убедиться, что расширения установлены правильно, а внутри /Homestead
выполните следующие две команды:
vagrant ssh
php -r "print_r(get_loaded_extensions());"
Моя продукция (33 и 61 добавлены):
DoDSoftware:Homestead DOoDSoftware$ vagrant ssh Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-22-generic x86_64) * Documentation: https://help.ubuntu.com/ vagrant@homestead:~$ php -r "print_r(get_loaded_extensions());" Array ( [0] => Core [1] => date [2] => libxml [3] => openssl [4] => pcre [5] => zlib [6] => filter [7] => hash [8] => pcntl [9] => Reflection [10] => SPL [11] => session [12] => standard [13] => mysqlnd [14] => PDO [15] => xml [16] => apcu [17] => apc [18] => bcmath [19] => calendar [20] => ctype [21] => curl [22] => dom [23] => mbstring [24] => fileinfo [25] => ftp [26] => gd [27] => gettext [28] => iconv [29] => igbinary [30] => imap [31] => intl [32] => json [33] => ldap [34] => exif [35] => mcrypt [36] => msgpack [37] => mysqli [38] => pdo_mysql [39] => pdo_pgsql [40] => pdo_sqlite [41] => pgsql [42] => Phar [43] => posix [44] => readline [45] => shmop [46] => SimpleXML [47] => soap [48] => sockets [49] => sqlite3 [50] => sysvmsg [51] => sysvsem [52] => sysvshm [53] => tokenizer [54] => wddx [55] => xmlreader [56] => xmlwriter [57] => xsl [58] => zip [59] => memcached [60] => blackfire [61] => Zend OPcache [62] => xdebug )
Как я уже сказал в начале, я не могу сказать, что это правильный путь, но он работает для меня до сих пор.
вы должны сначала войти на сервер Homestead с помощью ssh (возможно, вы уже знаете это – «бродяга ssh»).
затем перейдите в раздел «/etc/php/7.0/fpm/», также для cli в этом месте »/etc/php/7.0/cli/« отредактируйте его с помощью «sudo vi php.ini» (esc и: wq для сохранения изменения).
то вы должны перезапустить nginx: «sudo nginx -s reload»
и после этого перезапустите php-fpm: «sudo service php7.0-fpm restart»
если вы не уверены, что это php 5.x или 7.x на вашей ферме, используйте «find / -name php.ini», чтобы найти php.ini, вы, вероятно, получите 2 или 3 результата.