VirtualBox + Vagrant + CentOS6 + PHP5.6 + XDebug + VSCodeでリモートデバッグする方法

常駐案件でXdebugのリモートデバッグを設定する必要がありそうだったので、自宅でできるかどうかやってみた。

【ローカルPC環境】

Windows10(64bit)

Visual Studio Code(2017/12/9時点最新版)インストール済

VSCodeプラグインPHP Debug」インストール済

(とりあえずXAMMPでPHPデバッグできるくらいにはしておこう。)

【手順】

VirtualBOXをインストール

Downloads – Oracle VM VirtualBox
Windows hostsリンクをクリックしてexeファイルをダウンロードする。
VirtualBox-5.2.2-119230-Win.exe」ファイルダブルクリックしてNext押しまくり。

vagrantのインストールはここらへん参考にした。

weblabo.oscasierra.net

ボックスの追加はここらへん参考にした。

weblabo.oscasierra.net

コマンドプロンプトで以下のコマンドを実行。(CentOS 6.7 64bitのボックスを追加するため)
vagrant box add CentOS_67_64 https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box

vagrantの起動方法
コマンドプロンプト
cd C:\Users\どこでもよい\virtualbox(ほんとにどこでもよいからフォルダを作る)
vagrant up

Tera TermでSSHアクセス
192.168.33.10(場合による)
root/vagrant

 

(以下Tera Termによるコマンド実行)

Apacheインストール
yum install -y httpd

Apache起動
service httpd start

ブラウザで「http://192.168.33.10/(IPは場合による)」にアクセスして確認。

自動起動設定
chkconfig httpd on

PHPのインストールは以下参照。

qiita.com

Pearのインストール
yum -y install php-pear

Xdebugのインストールは以下参照。

Xdebugのインストール | WEBサービス創造記

しかし「XML Extension not fount」のエラーが出る。。

以下にて解決

stackoverflow.com

serverfault.com

つまりは、

vi `which pecl`

して「-n」を削除して上書き保存する。

 

再度peclにてxdebugのインストールを試みる。
pecl install xdebug
以下のエラーが発生。
Download of "pecl/xdebug" succeeded, but it is not a valid package archive
Error: cannot download "pecl/xdebug"
Download failed
install failed

pearのバージョンが古いようなので、
pearのアップグレードを試みる。
pear upgrade pear

しかし失敗する。

以下手動にて対応。

pear upgrade Archive_Tar
cd /tmp/pear/download/
tar -zxvf Archive_Tar-1.4.3.tgz(ファイル名(バージョン)は適宜変更のこと)
mv /usr/share/pear/Archive/Tar.php /usr/share/pear/Archive/Tar.php.org
cp /tmp/pear/download/Archive_Tar-1.4.3/Archive/Tar.php /usr/share/pear/Archive/
(Archive_Tar-1.4.3はバージョンによって適宜変更のこと)

再度pearのアップグレードを試す。
pear upgrade pear
いけた。

そしてxdebugのインストールを試みる。
pecl install xdebug
いけた。

Build process completed successfully
Installing '/usr/lib64/php/modules/xdebug.so'
install ok: channel://pecl.php.net/xdebug-2.5.5
configuration option "php_ini" is not set to php.ini location
You should add "zend_extension=xdebug.so" to php.ini

上記の文言はメモしておく。

php.iniの設定
php.iniの一番下に追記

(「zend_extension="・・・"」は上記でメモしたパスな)

[XDebug]

zend_extension="/usr/lib64/php/modules/xdebug.so"

html_errors=on
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_connect_back=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

上記追記後保存。その後、service httpd restartでApache再起動をお忘れなく。

参考

qiita.com

最新のVSCodeのバージョンだと、launch.jsonの設定方法が古かった・・
以下参照

marketplace.visualstudio.com

以下のような感じにしてあげてください。pathMappingsのとこな。

{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/var/www/html": "${workspaceRoot}"
}
},

 

以上!

クラウドテックがおすすめじゃない理由→後発だから

クラウドワークスで2年ほど在宅で頑張ってきたけども、なかなか収入が安定しないっていうのと、バイナリーオプションで失敗したっていうので、常駐勤務にしようと思って、姉妹サービスのクラウドテックに登録した。

まぁ、仕事はすぐに決まったわけだけども、正直クラウドワークスは他と比べて単価が低いと思うので、あまりおすすめはしない。なぜ単価が低いかというと、後発だからである。多い場合は間に3社くらい噛む。たらい回し感がパないの。

例えば面談が決まって10時25分にどこかの駅で待ち合わせしたら、その5分後に、別の会社に引き渡されて、もう5分後に、さらに別の会社に引き渡されて、その5分後に、さらに別の会社に引き渡される。

この時、僕の頭の中で流れているBGMはもちろん「ドナドナ」である。

いや、ドナドナより切ない。だって僕は子牛ではなく、大人の人間だからだ。

絶対に見返してやる。

とりあえずBOで抱えた負債をある程度返済して、一発逆転してやる。

そのために、僕は悪魔に魂を売るのだ。

ハイローオーストラリアの入金に楽天カードが使えない件

参ったなぁ。

ハイローオーストラリアはクレジット決済で入金できるのだが、どうも楽天カードは使えないらしい。

僕はもともとJCB楽天カードを持っていたがハイローの対応クレジットカードはVISAとMASTERカードのみだったので、わざわざJCBカードを解約して再度カード発行の申請をしたのだが・・。

楽天カードは決済するたびに楽天ポイントがつくから、どうせクレジットで入金するのなら楽天カードでやろうと思っていた矢先にこの悲報。

まぁ、世の中そんなに甘くないよね。

 

PHPメインのウェブ開発者が今後必要なスキル

フリーランスのお仕事紹介の会社にカウンセリングをしに行った。今まで2年間ほど一人で在宅での開発をしていたので、最近の流行りとかはこういう会社の営業の人の方が詳しいので話を聞いたことをメモの意味も込めて記載しておく。

PHPをメインとする開発者は、これから何を学ぶべきか。

まずPHPフレームワークはLaravelが多いらしいので、Laravelがまだの人は実際に案件を例え自分がCakePHPの方が慣れていても、Laravelで受けてみるのもよいだろう。

そしてPHPUnitを利用したユニットテストのノウハウを持っていると良いらしい。正直僕はPHPUnitを使ったことがないし、使い方も分からないし、分かりたくもない。これは他の多くのPHP開発者も同じことだと思う。テストするのは面倒。だけども大事らしいよ。テスト駆動開発が少しづつ浸透しているとな。関数を作る前にテストを書いて、空の関数を作って、テスト実装してわざと失敗させて・・、みたいな風に進めていくらしい。

そしてそういう自動テストの一環としてJenkinsを使うらしく、これもやり方を知っていた方がいいとな。

あとは、DockerとかChefとからしいが、これはかなりのサーバサイドエンジニア向けのスキルだろう。正直どちらもどういうものなのかさっぱり分からない。

今日の話では出てこなかったが、テストでいうとSeleniumとかも個人的には使えるようになりたい。ブラウザでの操作を自動化するというコンセプトはシンプルで分かりやすい。

ってことで「Laravel」「PHPUnit」「Jenkins」あたりを勉強しておこうと思う。

「排除」の一言のみ

すごいよね。「排除」の一言だけでこれだけ希望の党が負けるんだから。言葉って怖いっすよ。都政にも影響を及ぼしなけないっていう。

しかもこの「排除」という言葉は、僕の記憶が正しければ記者の一人が質問の際に「排除するんですか?」みたいなことを言って、それに呼応する形で「排除します」と小池さんが答えた。

世間としては民進党と組んだら結局一緒なんじゃね?っていう意見もあっただろうから、小池さんの意図は「政策に重きを置く」ということを伝えたかったわけだがね。

まぁ、なんか民進党が無くなったのは大きかったけどね。

さらに自民党が強くなってしまった感じもある。

消費税はどうなるんだろうね。憲法はどうなるんだろうね。

消費税10%とかやだなぁ。。

ブロックチェーン技術を使った投票にすべし

今日は衆議院選挙だったが、台風だった。どんな災害が起きても投票日は変わらないのね。うちの家とか避難勧告でJアラートとか出ている。

となってくると、あまり投票に行かない人は余計に行かないと思うのね。

だからインターネットを活用するとか、今はやりのブロックチェーン技術とかを使ってスマホから投票できるようにした方が良いのではないだろうか?

ものすごく非民主的な選挙になってしまったよね。別に誰が悪いわけでもないのだが、とても不公平な選挙になってしまったと思う。どんな災害が起きても民主性を失ってしまうことがないような投票システムにすべし。

18歳も選挙権を持ったわけだし、インターネット上での選挙活動もだいぶ活発になってきたので、投票自体もそうすべし。これが実現すれば結構政治も変わるかもね。

そんなことをふと思ったし、たぶんみんな思ってるはず。

クレジットカードを現金化する方法

簡潔に説明する。

・ハイローオーストラリアというバイナリーオプションサイトに登録する。

・クレジットカード(VISA/MASTER)で入金ができるので、入金する。

・出金する。

以上!