Visual Studio CodeでPHPを使えるようにしてみる

知り合いの方に、Webランディングページみたいなの作れない?と言われたので、作ってみる流れに。(作ったことないけど...)。

で、レンタルサーバーでお願いということで、Javaは使えませんと。ということで、PHPかな~、と。WordPressとLaravelの連携とかもやってみたいけど、時間の都合上、WordPressオンリーになるのかな~と。

そして、全然、関係ないけど、『Effective Java 第三版』出ましたね、4000円...手が出ないっす...サンタさんに頼みたいっす(涙)。


Effective Java 第3版

 

というわけで、まずは、Visual Studio Codeで、PHPの開発環境をば。 

 

PHPの開発に必要なもの

最低限必要なものは、 

って感じですかね。

CUIで利用する場合は、Webサーバとかも要らないとは思いますが。

データベースを使う場合なんかは、MySQLなんかも必要ですかね。MySQLじゃなくても、PostgreSQLSQLiteSQLServerOracle Database、まぁ、たいていのDBは使えるかと。

gray-code.com

⇧  上記サイト様が詳しいですかね。

で、Windowsだったら、XAMPP、OS XMac)だと、MAMPLinuxだとLAMPがド定番のPHP開発環境だったと思うんだけど、いま今ってどうなってるんだろう?

今回は、PHP、Webサーバを個別にインストールする感じで。

 

まずは、PHPのインストール

2019年3月2日(土)追記:↓  ここから

Chocolateyで、スレッドセーフなPHPをインストールする場合は、

choco install php --params '"/ThreadSafe /InstallDir:c:\PHP"'

みたいな指定が必要なようです。

2019年3月2日(土)追記:↑  ここまで

 

とりあえずは、PHPのインストール ですかね。コマンドプロンプトを管理者権限で起動しまして、

choco install php --version [バージョン] --% -ia INSTALLDIR="インストール先"    

f:id:ts0818:20181104143350p:plain

ひたすら、「y」で、Enter。

f:id:ts0818:20181104143452p:plain

f:id:ts0818:20181104143543p:plain

f:id:ts0818:20181104143611p:plain

f:id:ts0818:20181104143640p:plain

f:id:ts0818:20181104143717p:plain

f:id:ts0818:20181104143739p:plain

f:id:ts0818:20181104143805p:plain

f:id:ts0818:20181104143907p:plain

環境変数」に、追加しなくても

jyn.jp

⇧  上記サイト様によりますと、イケたらしいけど、今回はパスを追加で。あと、WebサーバもPHP内蔵サーバで代替できるらしいけど、内蔵サーバが本番サーバと同じ性能ってことはないと思われるので、一応、本番サーバに近しいWebサーバを導入する方向で。

というわけで、パス追加。

f:id:ts0818:20181104144923p:plain

あんら?昔インストールしたほう参照されてるけど? 

f:id:ts0818:20181104145132p:plain

なんか、環境変数に複数追加されてる場合は、明示的にphpを指定しないと駄目なんすかね?

f:id:ts0818:20181104145632p:plain

⇧  というか、指定したインストール先が無視されて、環境変数で「ChocolateyToolsLocation:C:\chocolatey-package」としているほうが優先されてるし...Msysと同じく、phpはインストール先の指定ができないパッケージなんすかね?

パッケージ管理ツールなのに、全然管理できてないChocolateyってどうなんすかね?

複数のphp環境変数に追加してない場合は、普通に『php』コマンドで大丈夫かと。

私は、『C:\chocolatey-package\php72\php.exe』でいくしかないかと...

 

Composerのインストール

phpのパッケージ管理ツールである、Composerは、PHP開発にとって必須らしいですと。 インストール先は、PHPのプロジェクトディレクトリとかにすれば良い感じですかね?

laboradian.com

⇧  上記サイト様が詳しいですかね。

https://getcomposer.org/download/ の「Command-line installation」でインストールということで。その前に、適当な場所に、PHPのプロジェクトのディレクトリを作成で。

f:id:ts0818:20181104151745p:plain

そんでは、 コマンドプロンプトで、PHPのプロジェクトのディレクトリに移動し、

C:\chocolatey-package\php72\php.exe -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"    

f:id:ts0818:20181104152415p:plain

⇧  はい、エラー。

nanoappli.com

⇧  上記サイト様によりますと、「php.ini」の設定とかの問題らしい。

f:id:ts0818:20181104152737p:plain

自分の場合は、以下の項目のコメントアウト(先頭に「#」が付いてる)を削除と、パスの変更をしました。

 
extension=openssl
extension_dir = "C:\chocolatey-package\php72\ext"

⇧ 「extension_dir」のパスは、PHP のインストール先のものを指定。

今度は上手くいきました。

f:id:ts0818:20181104153927p:plain

f:id:ts0818:20181104154004p:plain

続いて、「生成したPHPファイルが改ざんされていないかチェック」します。

 
C:\chocolatey-package\php72\php.exe -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

f:id:ts0818:20181104154117p:plain

「生成したPHPファイルを実行して、composer をインストール」

f:id:ts0818:20181104154405p:plain

f:id:ts0818:20181104154436p:plain

 「composer-setup.php ファイルはもういらないので削除」

f:id:ts0818:20181104154527p:plain

f:id:ts0818:20181104154545p:plain

 

composer.jsonを作成

Composer.pharコマンドは、comopser.jsonという設定ファイルを参照して動作するらしいので、composer.jsonファイルを作成します。 

C:\chocolatey-package\php72\php.exe composer.phar init -q   

f:id:ts0818:20181104185315p:plain

f:id:ts0818:20181104185421p:plain

⇧  composer.jsonファイルが作成できましたが、コマンドで作成しなくても、普通に「エクスプローラー」のほうで新規作成とかでも良いらしい...。

 

Packagistに登録されている「laravel/laravel」を利用

PHPの開発環境に関係ないけど、PHPのframeworkであるLaravelをインストールしてみます。

https://packagist.org/ ってサイトのパッケージが、composerでインストールできるものらしい。

packagist.org

 

というわけで、Laravelをインストールしてみます。

C:\chocolatey-package\php72\php.exe composer.phar create-project --prefer-dist laravel/laravel

f:id:ts0818:20181104195332p:plain

f:id:ts0818:20181104195401p:plain

⇧  何か、「php.ini」ファイルの設定で、『extension mbstring』が有効になってないって怒られると...。

f:id:ts0818:20181104195600p:plain

⇧  何か中途半端にインストールされちゃったのかな? 

っていうか、Laravelに必要なextensionなんて知らねーし。

しかし、Homesteadを使用しない場合は、以下の要件を満たす必要があります。

https://readouble.com/laravel/5.7/ja/installation.html

⇧  記載されてました... Laravel 5.7の必要要件。

ちなみに、いま読み込まれてるモジュールは、

C:\chocolatey-package\php72\php.exe -m    

f:id:ts0818:20181104201537p:plain

で確認できるらしい。

というわけで、再度 「php.ini」の編集して、足りなさそうなのをインストール。

extension=mbstring
extension=exif      ; Must be after mbstring as it depends on it

で、保存して、もう一回、Laravelのインストール。

f:id:ts0818:20181104202745p:plain

はい、怒られる~。一旦、作成された『Lalravel』ディレクトリを削除する必要があると。削除後、再トライ。

f:id:ts0818:20181104203334p:plain

f:id:ts0818:20181104203408p:plain

⇧  一応、成功したってことで良いのかな?

f:id:ts0818:20181104203503p:plain

で、「laravel」っていうプロジェクトディレクトリに移動し、内蔵サーバを起動しまして、

cd C:\Users\Toshinobu\Desktop\php_project\laravel
C:\chocolatey-package\php72\php.exe artisan serve  

f:id:ts0818:20181104204001p:plain

ブラウザで、「http://localhost:8000」にアクセスすると、 

f:id:ts0818:20181104204137p:plain

⇧  Laravelって初期ページが表示されれば、インストールは成功のようです。 

一旦、内蔵サーバを停止するため、コマンドプロンプトで『Ctrl + C』で。

f:id:ts0818:20181104204445p:plain

 

Visual Studio CodePHP設定

何はともあれ、Visual Studio Codeを起動し、「ファイル(F)」>「フォルダーを開く(F)...」で、

f:id:ts0818:20181104204855p:plain

作成していた、PHPのプロジェクトディレクトリを選択。

f:id:ts0818:20181104205022p:plain

そしたらば、f:id:ts0818:20181104205439p:plain をクリックで、「拡張機能」の追加画面を表示。

f:id:ts0818:20181104205403p:plain

■コード補完機能の拡張機能を追加

検索欄に、「PHP IntelliSence」って入力すると、ヒットする『Fleix Becker』さん作のものをインストール。同じ作者の「language-server 」というPHPライブラリもインストール(composerを使って)しないと、「PHP IntelliSence」が機能しないそうな...

f:id:ts0818:20181104205828p:plain

インストールされたら、「再読み込み」で。

f:id:ts0818:20181104210248p:plain

続いて、Visual Studio Codeの「settings.json」 を設定。f:id:ts0818:20181104211535p:plain クリックで、「エクスプローラー」に戻っておきます。

「ファイル(F)」>「基本設定(P)」>「設定(S)」。

f:id:ts0818:20181104210722p:plain

ワークスペースの設定」をクリックすると、PHPのプロジェクトディレクトリに、「settings.json」ができるので、

f:id:ts0818:20181104211714p:plain

下記のように追加。

{
    "php.validate.executablePath": "php-win.exeのパスをここに記入",
    "php.executablePath": "php-win.exeのパスをここに記入",
    "php.suggest.basic": false
}

自分の場合は、

{
    "php.validate.executablePath": "C:/chocolatey-package/php72/php-win.exe",
    "php.executablePath": "C:/chocolatey-package/php72/php-win.exe",
    "php.suggest.basic": false
}

みたいな感じになりました。っていうか、パスの区切りが「¥」だとエラーに...

f:id:ts0818:20181104212617p:plain

⇧  「Ctrl + S」で保存することで、PHP7がVisual Studio Codeで認識されるようになるらしい。

 

続いて、「language-server」のインストール。

composer.jsonファイルを開きます。

f:id:ts0818:20181104212925p:plain

追記し、保存します。

f:id:ts0818:20181104213029p:plain

なんか、SJISになってるから、右下の「UTF-8」ってクリック。

f:id:ts0818:20181104213545p:plain

エンコード付きで保存」を選択。

f:id:ts0818:20181104213632p:plain

UTF-8 utf8」で。ってやったけど、

f:id:ts0818:20181104213735p:plain

サクラエディタで開くと、SJISのまま...Visual Studio Codeのバグ?

f:id:ts0818:20181104214051p:plain

⇧  仕方ないので、サクラエディタで「ファイル(F)」>「名前を付けて保存(A)...」。

f:id:ts0818:20181104214229p:plain

文字コードセット(C):」で、「UTF-8」にしてから、「保存(S)」。

f:id:ts0818:20181104214342p:plain

「はい(Y)」で。

f:id:ts0818:20181104214500p:plain

で、 コマンドプロンプトで、composer.jsonのあるディレクトリまで戻って、

C:\chocolatey-package\php72\php.exe composer.phar update --dev

f:id:ts0818:20181104215335p:plain

「vendor」ディレクトリに、ライブラリがインストールされるようです。

f:id:ts0818:20181104215724p:plain

 

デバッグ機能の拡張機能

で、「PHP Debug」 って拡張機能を導入することで、Visual Studio CodePHPデバッグを有効化できるようです。

f:id:ts0818:20181104220411p:plain

インストールされたら、「再読み込み」で。

f:id:ts0818:20181104220549p:plain

で、f:id:ts0818:20181104220720p:plain をクリックして、f:id:ts0818:20181104220854p:plain をクリック。

f:id:ts0818:20181104220828p:plain

PHP」を選択。

f:id:ts0818:20181104220957p:plain

「launch.json」ファイルが開くので、編集していきます。

f:id:ts0818:20181104221052p:plain

local環境であれば、「"pathMappings"」の指定は不要?

marketplace.visualstudio.com

⇧  というかリモートデバッグしたいんでは無いんですが...リモートデバッグ以外はどうすれば?

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log": true,
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "log": true,
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000,
            "runtimeExecutable": "C:/chocolatey-package/php72/php.exe"
        }
    ]
}

⇧ こんな感じで試してみた。

 適当なPHPファイルを作成し、保存。

f:id:ts0818:20181104230616p:plain

⇧  『PHP ファイルを lint するために C:/chocolatey-package/php72/php-win.exe (ワークスペースの設定として定義されている) を実行することを許可しますか?』ってあるんで、「許可」で。 

デバッグしてみたところ、一応、プログラムは動いたらしい...

f:id:ts0818:20181104232530p:plain

ちょっと時間のある時に調べてみます。

WordPress入れてないや...Webサーバも入れてないや...データベースも...そして、今日も一日を無駄にしてしまった...

ヤバい...サイト作り、1mmも進んでないやん......

今回はこのへんで。