PHPStormでYii2インストール後に自動生成されるContactページでPNGエラー

環境
Mac OS X Yosemite 10.10.3
PhpStorm 8.0.3
PHP 5.6.9
ブラウザ PHP build in browser

スクリーンショット 2015-06-04 23.20.44
上記のような画像のエラーが出ました。
ようはこれPNGをサポートしたExtensionがPHPに設定されてないよっていうエラー
なので、サクッとエラーメッセージに書いてある通り
ImageMagickかGDを使えるようにしよう!

1.ImageMagickのインストール

で、brewでImageMagickをインストールすると上手く行かない…
頑張ってやってみたけど、やはりなんかおかしい。
ググってもbrewでインストールするとはまりどこが多いと書いてある始末。

ここは頭を切り替えてインストーラーからインストールする

http://cactuslab.com/imagemagick/

ここは特に難しいことはなく普通にインストーラーにしたがってインストール。

2.Imagickのインストール

さて、これもググるとPECLでインストールしろって書いてあるけど、
これでやるとエラーが発生。
ここはさっきえらい目にあったbrewさんで懲りずにインストールする

brew install php56-imagick

3.imagick.soのコピー

この状態でYii2のContactにアクセスして問題なく表示されれば完了。
まだエラーが出ている場合は

cp /usr/local/Cellar/php56-imagick/3.1.2/imagick.so PHPがインストールされたディレクトリ/extensions/imagick.so

など自分の環境に合わせてextensionsにコピーする。

4.phpのimagick.so extensionsを有効にする

echo extension=imagick.so > PHPがインストールされたディレクトリ/etc/conf.d/imagick.ini

これでYii2のContactページにアクセスすると問題なく表示されている(はず)

PhpStormのComposerのAdd Dependencyでパッケージリストの取得に失敗する

OS: OS X Yosemite 10.10.3
PhpStorm: 8.0.3

PhpStromのメニューから
Tools > Composer > Add Dependency

Could not get package info. Failed to connect to https://packagist.org/packages/list.json: java.lang.RuntimeException: Could not generate DH keypair Please check your internet connection.

上記のエラーが発生しcomposerのパッケージリストが取得出来ない現象が発生。


解決方法:

1.まずJDKを1.8にアップデートする
2./Applications/PhpStorm.app/Contents/Info.plist
の下記の場所を修正してJDK1.8を見にいくように修正する

<key>JVMVersion</key>
<string>1.6*</string>
<key>JVMVersion</key>
<string>1.8*</string>

上記の対応で問題なくcomposerのパッケージリストの取得に成功した。

VagrantにLAMP(Linux+Apache+MySQL+PHP)環境を構築する Part.2

Part.2ではchefのrecipeを使ってみる

この記事は下記の続きです
VagrantにLAMP(Linux+Apache+MySQL+PHP)環境を構築する Part.1

1.作業のディレクトリの作成

作業用のディレクトリを作成します。

$ mkdir vagrant-lamp

2.Vagrantfileの生成

次に先程作成したディレクトリに移動して、Vagrantの初期設定コマンドを実行します。

$ cd vagrant-lamp
$ vagrant init chef/centos-6.5

これでvagrant-lampディレクトリ配下にVagrantfileが生成されました。
このVagrantfileを修正してプロビジョニングを行います。

3.SELinuxでrecipeを試す

まずSELinuxが有効になっているのを確認します。
一旦Vagrantfile修正前の状態でインスタンスを起動してみます。

  
$ vagrant up
$ vagrant ssh
$ getenforce
  

Berksfileを修正します。

まずはdevelopmentディレクトリに戻ります

$ cd ../

生成されたBerksfileには

site :opscode

と記述があると思いますが、vimなどで下記のように修正します。

source “https://api.berkshelf.com”

次に公開されているcookbookを記述して行きます。
https://supermarket.chef.io/cookbooks
ここから自分の環境に合わせたcookbookを探しBerksfileに追記します。

source "https://api.berkshelf.com"
cookbook 'selinux'

上記のようにBerksfileを編集したら

下記を実行しSELinuxのcookbookをダウンロードします。

$ berks vendor ./cookbooks

このときcookbooksディレクトリが存在している場合エラーになるので消します。
cookbooksディレクトリが存在している場合のみ下記を実行しディレクトリを一旦削除します。

$ rm -r ./cookbooks

Vagrantfileを修正します。

$ cd vagrant-lamp
$ vim Vagrantfile

まずはchefのプロビジョニングの設定
cookbooks、site-cookbooksディレクトリへのパスを指定
使用するレシピを指定

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = “chef/centos-6.5”
config.omnibus.chef_version = :latest
config.vm.provision “chef-solo” do |chef|
chef.cookbboks_path = [“../cookbooks”, “../site-cookbooks”]
chef.add_recipe “selinux::disabled”
end
end

上記の設定を再読み込みさせます。


$ vagrant reload --provision

SELinuxが無効になっていれば完了です。

$ vagrant ssh
$ getenforce
これでSELinuxをdisableにするrecipeを使いこなせるようになりました(多分)

VagrantにLAMP(Linux+Apache+MySQL+PHP)環境を構築する Part.1

Part.1ではVagrantのインストールと最小構成で起動させることが目標

1.VirtualBoxのインストール

VirtualBoxの公式サイトからパッケージをダウンロードしてインストーラーの手順通りにインストールします。

http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp#vbox

2.Vagrant本体のインストール

Vagrantの公式サイトからパッケージをダウンロードしてインストーラーの手順通りにインストールします。
https://www.vagrantup.com/downloads.html

3.vagrant-omnibus pluginのインストール

vagrant-omnibus
このプラグインはプロビジョニング時にchef-clientがインストールされているかを検出し、
指定したバージョンのchef-clientをインストールしてくれます。
・インストール方法

$ vagrant plugin install vagrant-omnibus

4.sahara pluginのインストール

sahara
仮想マシン(VirtualBox)の状態をロールバック出来るようにする。

・インストール方法

$ vagrant plugin install sahara

5.vagrant-vbguest pluginのインストール

  vagrant-vbguest
VirtualBoxのゲストOS用ソフトを更新する

・インストール方法

$ vagrant plugin install vagrant-vbguest

6.インストールされたpluginの確認

下記のコマンドでインストール済みのプラグインの確認が出来ます。

$ vagrant plugin list

7.chef DKのインストール

下記URLにアクセスし
https://downloads.getchef.com/chef-dk/
  今回Mac OS XにインストールするのでMac OS Xをクリック後

Downloadボタンを押下しダウンロードが完了後
インストーラーの指示通りにインストールします。

8.knife-soloのインストール

chef DKにはknif-soloが含まれていないのでインストールする

$ chef gem install knife-solo

Chef DKの環境内にknife-soloがインストールされます。

9.chef関連ファイルの生成

まずはchef関連ファイルを設置するディレクトリを作成します。

$ mkdir development

/user/ユーザー名/developmentというディレクトリが生成されます。
生成されたディレクトリにcdコマンドで移動しknifo soloを実行しchef関連ファイルを生成します。

$ cd development
$ knife solo init .

Berksfile, cookbooks, data_bags, environments,

nodes, roles, site-cookbooksが生成されます。

10.Vagrant Boxの取得

Vagrantで使用するBoxファイルをダウンロードします。
まず下記のサイトから希望のBoxファイルを探します。
https://vagrantcloud.com/discover/featured

今回はchef/centos-6.5を使用します。

$ vagrant box add chef/centos-6.5

下記のコマンドでインストールされたBoxファイルの確認が出来ます。

$ vagrant box list

作業用のディレクトリを作成します。

$ mkdir vagrant-lamp

次に先程作成したディレクトリに移動して、Vagrantの初期設定コマンドを実行します。

$ cd vagrant-lamp
$ vagrant init chef/centos-6.5

これでvagrant-lampディレクトリ配下にVagrantfileが生成されました。
このVagrantfileを修正してプロビジョニングを行います。

一旦Vagrantfile修正前の状態でインスタンスを起動してみます。

$ vagrant up

Vagrantの起動状態を確認します。

$ vagrant status

runningと表示されていれば問題なく起動しています。

 

iOSでgoogle mapsのweb版にアクセスすると「ページを開けません」エラーになる

表題の事象が下記の端末で発生

docomo iPhone 5S iOS 7.1.1
docomo iPhone 6+ iOS 8.1
au iPhone5 iOS8.1
au iPhone5S iOS8.0
SB iPhone4S iOS7.1.1

上記のiPhone、iOSのバージョンで運営サイトからリンクを踏んでweb版のgoogle mapsにアクセスした際に「ページを開けません。アドレスが無効です。」とアラートが表示され、リダイレクトでアクセス元のページに戻ってします。
パラメータを削って確認などを行ってみたが、パラメータの「q=xxx」がついていると発生するようだ。
しかし、パラメータqはピンを刺したり名称を表示する際には必須のパラメータだ。
が、どうも直接の原因はそこではなさそう。
試しにリファラーをきるオプションをタグに設定してみるとビンゴ。
具体的にはタグに「rel=noreferrer」を追記してリファラーを送らないように設定する。

<a href=”http://maps.google.com/maps?q=地名” rel=noreferrer>google mapへのリンク</a>

で問題なくgoogle mapsにアクセス出来る。

※iOS8.1.2では修正されている。(2015/01/20現在)

vagrant-vbguest(Vagrant Plugin) 説明書

vagrant-vbguest
https://github.com/dotless-de/vagrant-vbguest
VirtualBoxのゲストOS用ソフトを更新する

・インストール方法

$ vagrant plugin install vagrant-vbguest

・使い方

設定例:

Vagrant::Config.run do |config|
# we will try to autodetect this path.
# However, if we cannot or you have a special one you may pass it like:
# config.vbguest.iso_path = “#{ENV[‘HOME’]}/Downloads/VBoxGuestAdditions.iso”
# or
# config.vbguest.iso_path = “http://company.server/VirtualBox/%{version}/VBoxGuestAdditions.iso”

# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false

# do NOT download the iso file from a webserver
config.vbguest.no_remote = true
end

 

設定オプション:

iso_path : VBoxGuestAdditions.isoファイルのフルパスorURLを指定

auto_update (Boolean, default: true) : 新しいバージョンを確認するかどうか

auto_reboot (Boolean, default: true when running as a middleware, false when running as a command) : GuestAdditionsがインストールされていて、ロードされていない場合にboxを再起動するかどうか

no_install (Boolean, default: false) : バージョンのチェック後にインストールを実行しないかどうか。バージョンミスマッチの警告は表示される

no_remote (Boolean, default: false) : 遠隔地(任意のhttpアドレスを含む)のisoファイルをダウンロードしないかどうか。

installer (VagrantVbguest::Installers::Base, optional) : インストーラークラスへの参照

sahara(Vagrant plugin) 説明書

sahara
https://github.com/jedi4ever/sahara
仮想マシン(VirtualBox)の状態をロールバック出来るようにする。

・インストール方法

$ vagrant plugin install sahara

・使い方

sandboxモードになる:

vagrant sandbox on

commitを行う:

vagrant sandbox commit

 

rollbackを行う:

vagrant sandbox rollback

 

sandboxモードの終了:

vagrant sandbox off

vagrant-omnibus(Vagrant plugin) 説明書

vagrant-omnibus
https://github.com/opscode/vagrant-omnibus
このプラグインはプロビジョニング時にchef-clientがインストールされているかを検出し、
指定したバージョンのchef-clientをインストールしてくれます。

・インストール方法

$ vagrant plugin install vagrant-omnibus

・使い方

最新バージョンのchefをインストールする設定:

Vagrant.configure(“2”) do |config|

config.omnibus.chef_version = :latest

end

指定バージョンのchefをインストールする設定:

Vagrant.configure(“2”) do |config|

config.omnibus.chef_version = “11.4.0”

end

インストール用のスクリプトを作成してchefをインストールする設定:

Vagrant.configure(“2”) do |config|

config.omnibus.install_url = ‘http://acme.com/install.sh’ # config.omnibus.install_url = ‘http://acme.com/install.msi’ # config.omnibus.install_url = ‘/some/path/on/the/host’

end

Vagrant-cachierプラグインが存在し、config.cache.auto_detectが有効な場合にダウンロードがキャッシュされるが、そのキャッシュをoffにする設定:

Vagrant.configure(“2”) do |config|

config.omnibus.cache_packages = false

end

複数のVMウェアを意識した作りになっており、同時に複数のchefのバージョンをインストールすることが可能。:

Vagrant.configure(“2”) do |config|

config.vm.define :new_chef do |new_chef_config|

new_chef_config.omnibus.chef_version = :latest

end

config.vm.define :old_chef do |old_chef_config|

old_chef_config.omnibus.chef_version = “10.24.0”

end end