Как автоматически включить расширения php в Homestead на бродяжничестве

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 результата.