web-dev-qa-db-ja.com

VagrantUpでHomesteadでphp拡張機能を自動的に有効にする方法

Vagrant1.8.7がVirtualBoxで実行されているHomesteadでLaravel 5.3を使用しています。

いくつかのphp拡張機能を有効にする必要があります。

ボックスにSSHで接続し、php.iniを編集して拡張機能を有効にできることは知っていますが、これは非常に贅沢な方法のようです。

vagrant up --provisionを呼び出すだけで、ボックスを使用できるように、特定のphp拡張機能を有効にしてボックスをプロビジョニングするようにVagrantに指示したいと思います(Vagrantのポイントですよね?)

したがって、vagrant upでHomesteadのphp拡張機能を自動的に有効にするにはどうすればよいですか?

12
Wesley Smith

少しいじった後、以下は私が思いついたものです。私はこれが正しい方法であるとは保証しません私の場合はそれが機能しているようです:

Homesteadをインストール したときに生成された_after.sh_を見つけます。私の場合、Mac El Capitainでは、ファイルは_~/.Homestead/after.sh_に作成されますが、Windowsの同様の場所に_.bat_があると思います。

実際に生成されたコピーではなく、Homesteadインストールからのテンプレートファイルである_~/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'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 # 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-*_などを使用して使用可能な拡張機能を一覧表示できます。


放浪者の破壊

さて、ホームステッドが起動している場合は、ターミナルでcdをホームステッドディレクトリに移動します。私にとっては_cd ~/Homestead_、次に_vagrant destroy_を実行します。


浮浪者

_/Homestead_内で_vagrant up --provision_を実行します


インストールを確認してください

拡張機能が正しくインストールされていることを確認するには、_/Homestead_内で次の2つのコマンドを実行します。

_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
)
_

冒頭で述べたように、これが正しい方法だとは言えませんが、今のところうまくいっています。

誰かがこのアプローチの欠陥を見つけたら、私にそれをすべて間違っていると言ってください:)

7
DelightedD0D

最初にsshを使用してHomesteadサーバーにログオンする必要があります(おそらくこれはすでに知っています-「vagrantssh」)。

次に、「/ etc/php/7.0/fpm /」に移動します。この場所には、「/ etc/php/7.0/cli /」のCLIもあります。「Sudoviphp.ini」(escおよび:wqで保存変更)。

次に、nginxを再起動する必要があります: "Sudo nginx -s reload"

その後、php-fpmを再起動します: "Sudo service php7.0-fpmrestart"

ホームステッドでphp5.xか7.xかわからない場合は、「find/-namephp.ini」を使用してphp.iniを検索すると、おそらく2つまたは3つの結果が得られます。

1
niklaz

これがまだ必要な場合:

=> https://guides.wp-bullet.com/install-apcu-object-cache-for-php7-for-wordpress-ubuntu-16-04/

=>最初の3つのコマンドを実行します:

Sudo apt-get update
Sudo apt-get install php7.0-apcu -y
Sudo service php7.0-fpm restart

または、単にafter.shに追加します。

Sudo apt-get install php7.x-apcu -y
0
Wiwwil