Vagrant1.8.7がVirtualBoxで実行されているHomesteadでLaravel 5.3を使用しています。
いくつかのphp拡張機能を有効にする必要があります。
ボックスにSSHで接続し、php.iniを編集して拡張機能を有効にできることは知っていますが、これは非常に贅沢な方法のようです。
vagrant up --provision
を呼び出すだけで、ボックスを使用できるように、特定のphp拡張機能を有効にしてボックスをプロビジョニングするようにVagrantに指示したいと思います(Vagrantのポイントですよね?)
したがって、vagrant upでHomesteadのphp拡張機能を自動的に有効にするにはどうすればよいですか?
少しいじった後、以下は私が思いついたものです。私はこれが正しい方法であるとは保証しません私の場合はそれが機能しているようです:
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
)
_
冒頭で述べたように、これが正しい方法だとは言えませんが、今のところうまくいっています。
最初に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つの結果が得られます。
これがまだ必要な場合:
=> 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