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

Im использует Laravel 5.3 в Homestead с Vagrant 1.8.7, работающим на VirtualBox.

Мне нужно включить некоторые расширения php.

Я знаю, что мог бы сделать ssh в поле и отредактировать php.ini, чтобы включить расширение, но это кажется очень анти-бродячим способом для этого.

Я хочу сказать, что Vagrant предоставил ящик с определенными расширениями php, чтобы я мог просто вызвать vagrant up --provision, и поле будет готово к работе (вроде бы точка бродяг правильно?)

Итак, Как мы можем автоматически активировать расширения php в Homestead на бродягах вверх?

Ответ 1

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

Найдите after.sh который был создан при установке усадьбы. Для меня, на Mac El Capitain, файл создается в ~/.homestead/after.sh, я думаю, что .bat в аналогичном месте на окнах.

Не делайте ошибку, редактируя ~/Homestead/src/stubs/after.sh, это файл шаблона из установки усадьбы, а не фактически созданная копия.


Редактировать 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 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 # update to php7.2-ldap if using php 7.2 etc...

# enable xdebug via cli
sudo phpenmod -s cli xdebug

# restart php and nginx
sudo service php7.3-fpm restart && sudo service nginx restart

Если вы психически не знаете точное название 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/
[email protected]:~$ 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
)

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

Если кто-то видит недостаток в этом подходе, не стесняйтесь сказать мне, что я все делаю неправильно :)

Ответ 2

вам следует сначала войти на сервер 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 результата.