xamppにca証明書を設定

参考:http://nanoappli.com/blog/archives/7992

composer.pharやらsymfony.pharでcurlするときに次のようなエラーが出たときの対処法

cURL error 60: SSL certificate problem: unable to get local issuer certificate

内容的には信頼できるca証明の一覧が無いぞ~!ってことらしい

cacert.pemをダウンロードして、phpのディレクトリ放り込む
php.iniのcurlセクションの「curl.cainfo」にcacert.pemのフルパスを指定する。

[curl]
curl.cainfo = "[PHP_ROOT]cacert.pem"

※私みたいにプロジェクトごとにxammp環境作ってるようなら共通で使いまわす方が楽かも

PS.
念のためcreate.pemについて提供元を確認してみた。
WindowsでCURLでCURLコマンドを落としたとこでした。

pemの内容については
https://curl.haxx.se/docs/caextract.html
で確認できる。

色々あるsymfony2のインストール方法

色々調べてみたところホントに色々な入れ方やらパッケージ?があるみたいなのでとりあえず整理します。

composerを使ったやり方

php composer.phar create-project [パッケージ] [インストール先のpath] [バージョン]

例)php composer.phar create-project symfony/framework-standard-edition /path/to/webroot/Symfony 2.3.0

php composer.phar search [文字列] 

で探してみたけど数が多すぎると全部は出してくれないっぽいので

[パッケージ]と[バージョン]はPagkagistで探す方がいいらしい。

ちなみに、composerはcomposer.jsonってファイルでパッケージ等を設定して

php composer.phar install

ってする方法もあるようで、むしろこっちが一般的?

symphony.pharを使ったやり方

php -r "readfile('https://symfony.com/installer');" > symfony.phar
php symfony.phar [コマンド] [インストール先のpath] [バージョン]

例)
php symfony.phar new symfony2 2.3.0
php symfony.phar demo symfony2 2.3.0

newとdemoの違いはよくわからない。。。

helpを見るには

php symfony.phar

「PATHを通す」ってどゆこと?

PATHっていうのはファイルパスを指す略称でもあるのですが、
「PATHを通す」という風に言う場合は主に環境変数の事を指します。

コマンドプロンプトを開いて

path

を実行するとディレクトリのパスがいっぱい出てくると思います。

「;」セミコロンはフォルダとフォルダの区切り文字「ディレクトリセパレータ」を意味しています。

前の方からいくつかを抜き出して整理すると
C:\WINDOWS
C:\WINDOWS\system32
C:\WINDOWS\System32\Wbem
C:\WINDOWS\System32\WindowsPowerShell\v1.0\

ってなってます。
このフォルダが何やねん!って話なんですけど。

「このフォルダの中にあるファイルはカレントにあるものとして扱いますよ。」って意味で、フルパスで指定しなくてもアクセスすることが出来るようになってます。

例えばメモ帳(notepad.exe)を開いてみましょう。

まず、カレントが「c:\Winows」だったとして、カレントにnotepad.exeがないことを確認しました。

c:\Windows>dir notepad.exe

カレントにnotepad.exeがないのですが

c:\Windows>notepad.exe

という風にメモ帳を実行するとちゃんと開いてくれます。

notepad.exeのフルパスは「c:\Windows\system32\notepad.exe」です。

本来はカレントが合ってないのでnotepad.exeは実行できないのですが、
コンピュータはpathに設定されてるフォルダの中もカレントとして扱うので、
C:\WINDOWS;
C:\WINDOWS\system32;
C:\WINDOWS\System32\Wbem;
C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
これらのフォルダを上から順に探していくんです。

そして2番目に「C:\WINDOWS\system32」があるので、この中から見つけ出してnotepad.exeを実行してくれました。
この仕組みを「pathが通ってる」と言います。

じゃぁ、「pathを通す」ってどうしたらいいのか。
方法は大きく3つ。

1.環境変数「path」に目的のファイルのディレクトリパスを追加する。
2.目的のディレクトリをカレントにする。
3.相対パス、絶対パスで目的のファイルを指定する

環境変数「path」に目的のファイルのディレクトリパスを追加する

set path=[目的のディレクトリパス];%path%

ってすればOKです。

path

で追加されたかどうか確認しましょう。

常にそのフォルダをpathに追加したい場合は環境変数の設定でpathを追記しましょう

目的のディレクトリをカレントにする

c:\Windows > cd system32
c:\Windows\system32 > notepad.exe

相対パス、絶対パスで目的のファイルを指定する

■絶対パスで指定

c:\Windows > c:\widnows\system32\notepad.exe

■相対パスで指定

c:\Windows > system32\notepad.exe

とか

c:\Windows > ./system32\notepad.exe

このパスが通ってないとインストールしたのに「○○ファイルが見つかりません」とか文句を言われます。

カレント(Current)

カレントとかカレントパスって呼ばれるものがあります。

今居るフォルダの事を「カレントディレクトリ」って言って、このディレクトリのパスを「カレントパス」
って言います。


↑この「c:\Windows\System32」の部分が今いるフォルダ(ディレクトリ)です。

エクスプローラで表現すると

こういうこと

ファイルパス・ディレクトリパス

今回お話するパスは「ファイルパス」とかのPATHです。

どれもコンピュータシステムでファイルやフォルダ(ディレクトリ)の所在地を示す文字列です。

言葉で説明するよりも実際に目にする方が早いので
■Windowsの例

C:\Widnows\system32\drivers\etc\hosts

こんな感じのやつです。
これをwebサイトのパンくず規則で書くとこう!

C: > Widnows > system32 > drivers > etc > hosts

口語で書くと
Cドライブの中の、windowsフォルダの中の。。。(略)。。。hostsファイル

つまり
「:」はドライブ
「/」はフォルダ
を表してるんですね。

でこの区切りの事をセパレータ(英語にしただけ)って言います。

WindowsでCURL

最近のPHPフレームワークを使おうと思うとComposerが前提になってきて
composer用のインストールスクリプト(jsファイル)をダウンロードするにはCURLがあると便利だなぁ~ってことで導入です。

参考:こちらを参考にさせていただきました。m(_ _)m

■手順

  1. curl.exeをダウンロードして解凍
  2. system32フォルダにコピー(インストール)
  3. 実行テスト

curl.exeをダウンロードして解凍

curlダウンロードページから任意のファイルをダウンロード。

※私はx86_64(core i7)なのでその中からバージョンが新しくて個人的に解凍しやすい7zipを選んでます。

解凍すると↓な感じのファイルが出てきます。

このcurl.exeはいわゆるコマンドファイルなのでコマンドプロンプト等で利用する前提のものになります。

system32フォルダにコピー(インストール)

普段はこうしたツールもWindowsにインストールせずに必要な時にpath通して使うんですけど、
よく使いそうなので今回はpathの通ったところにコピーしておきます。

※system32やらWindowsディレクトリにコピーしたくない人は環境変数からpathを通してあげればOKです。
ダウンロードやらデスクトップで解凍したときはprogram_filesとかにフォルダごと放り込むとかおススメ

コマンドプロンプトを管理者として開きます。

C:\WINDOWS\system32> copy [解凍したフォルダのpath]curl.exe
C:\WINDOWS\system32> copy [解凍したフォルダのpath]libcurl-x64.dll
C:\WINDOWS\system32> copy [解凍したフォルダのpath]curl-ca-bundle.crt

インストールはこれでOK!

実行テスト

C:\WINDOWS\system32> cd c:\
C:\> curl
curl: try 'curl --help' or 'curl --manual' for more information

3行目のようにオプション指定するとマニュアル見れるよって言われたらOK!

xampp環境でEC-CUBE3開発を少し楽にするコマンドプロンプト起動バッチ

EC-CUBE3ってややこしや(笑

composerや各種ジェネレータの利用などなんだかんだとコマンドプロンプトを使う機会が多いのですが、
xampp環境(zip版)だとpathが通ってないので色々面倒

っということでバッチを作りました。

cmd /k set path=%~dp0xampp\php;%path%

cmd /k
この部分でバッチが勝手に閉じられないように対処

set path=%~dp0xampp\php;%path%
ここでpathを通す作業

set
コマンドプロンプトで環境変数を設定するためのコマンド

set path=
これでPATHを設定しますよ~って意味

%~dp0
これで今いるディレクトリパスが取れるらしくて最後にディレクトリセパレータが入ってます。
例) c:\windows\

xampp\php
ここはバッチを置いたディレクトリからphp.exeまでのPATHですね

;
PATHセパレータ

%path%
「既に登録されてるPATH」=環境変数のを参照する。

つまり
set path=[xampp/phpまでのフルパス];%path%

をしてるってこと。

mysqlにもPATHを通すなら

cmd /k set path=%~dp0xampp\php;%~dp0xampp\mysql\bin;%path%

jQuery使ってたらネイティブDOMが浦島太郎になってた話

先日仕事でEC-CUBEの2系のカスタマイズしてたんです。

内容的にはformにinput type=hiddenな項目追加するというもの。

既存のソースにあんまり手を入れたくないし、
複数サイトに横展開していかなきゃいけないのでモジュール(アドオン)化したくって
JSから要素追加しちゃえ!ってこんな感じの操作をさせたんですね。

$("#form").append('<input type="hidden" name="hogehoge" value="">');

ところがこれがなぜか動かない!!

首をひねりながら色々調べる事30分
$がprototypeになってたっていうね(笑

一般的な対処は

jQuery("#form").append('<input type="hidden" name="hogehoge" value="">');

ってすればいいんでしょうけど。。。

jQueryに依存してったのってこの部分だけなので、この際全部ネイティブで書いちゃおうかと思ったんですね。

私の知ってるネイティブなDOM(level3)ってappend([DomNode])しかなくて。。。
これがとってもメンドクサイ( ˘•ω•˘ )

querySelector()が知らぬ間に出来てたのを思い出して、もしかしてなんか出来てるかも?
で、ちょいと調べたら素敵なメソッド出来てるじゃん!!

var form = document.querySelecter("#form");
form.insertAdjacentHTML('beforeend','<input type="hidden" name="hogehoge" value="">');

なんでもコア技術が好きな私としてはめちゃくちゃ感動してたんです!!

で、今日になってquerySelector()とかも追加されてるしもしかしてDOM Level4出てる?
なんて思って調べてみた。

DOM4 REC-dom-20151119
あるじゃーん!
DOM Level4じゃなくてDOM 4 !?
Levelとこ行ったの!!!Σ( ̄□ ̄;

って突っ込みつつ長らく浦島太郎だったことを思い知ったのでした。。。

XAMPPにComposerのインストール

margedocさんのオールインワン等PC内に複数環境を作っている場合の情報とかがなかったので残します。

コマンドプロンプトから次を実行

>cd [xampp/phpのパス]
[xampp/phpのパス]>php  -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"
Failed loading \project\ec-cube3\pleiades\xampp\php\ext\\project\ec-cube3\pleiades\xampp\php\ext\php_xdebug.dll
All settings correct for using Composer
Downloading...

Composer (version 1.5.2) successfully installed to: [xampp/phpのパス]\composer.phar
Use it: php composer.phar

こんだけ。

ザックリいうと、composer.pharがphpのパスの通ってるところにあれば良いっぽい

次のコマンドで動作確認

[xampp/phpのパス]>php composer.phar
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.5.2 2017-09-11 16:59:25

Usage:
  command [options] [arguments]

こんなのが表示されればとりあえず動いてるらしい

composerを利用する場合は
↑みたいに

php composer.phar [パラメータ]

カレントが[xampp/phpのパス]以外だと

php [xampp/phpのパス]composer.phar [パラメータ]

ってしなきゃダメ臭い。
すんごい面倒なのでバッチを作る

[xampp/phpのパス]>echo @php "%~dp0composer.phar" %*>composer.bat

これでcomposer.batが作られました。
※[xampp/phpのパス]で実行しないとダメなので注意!
そしてディレクトリ名変更したら修正しなきゃダメなのでこの点も注意!
っても絶対このこと忘れてるよねwww

今後は「php composer.phar」を「composer」って読み替えて使う

カテゴリー: PHP