PHP 記事一覧

WindowsホストOSにPHPをインストールする

公開日時:2021/05/07 08:32

はじめに

で、VirtualBox上にCentOS 7がインストールされている事を前提としています。

また、本記事はVSCodeの導入のようにMicrosoft Visual Studio Code(VSCode)を導入してPHPでのソフトウェア開発をするにあたってホストOS側にもPHPの実行環境を求められる為、そのインストールを行うのが目的です。

Windows版PHPバイナリの入手

Windows版PHPは実行可能なバイナリファイルとしてPHPの公式サイトから入手できます。

公式サイト:PHP: Hypertext Preprocessor

php.net

CentOS上にPHPの開発環境を作成するの記事でインストールしたPHPのヴァージョンが7.4.18でしたが、先日5月6日に7.4.19がリリースされたようですのでこちらをインストールし、後でCentOSのPHPもアップデートします。

PHPのヴァージョン確認

公式サイト:PHP For Windows: Binaries and sources Releases

PHPにはThread Safe版(TS)とNon Thread Safe版(NTS:マルチスレッド環境を想定していない実装)がありますが、用途によって使い分ける必要があり説明が長くなります。

この記事の目的はVSCodeで指定するPHP実行環境を作る事ですのでTS版、NTS版どちらでも構いませんが、ここではTS版をインストールします。

Windows版PHPインストーラー

ダウンロードされた.zipファイルを解凍すると、実行可能なPHPのバイナリであるphp.exeを含む諸物のファイルが格納されたフォルダが出てきます。

PHP実行環境一式

このディレクトリをC:\など、任意の場所に移動してください。

環境変数PATHの設定

今はストレージに保存しただけですので、PHPは実行可能なプログラムとしてホストOSに認識されていません。

php -v

上記コマンドを実行すると、以下のようなエラーが表示される筈です。

※このエラーが表示されずPHPのヴァージョンが表示された方は既にPHPの実行環境がインストールされて環境変数PATHが設定されているので適切に項を読み飛ばしてください。

コマンドが見つからない

PHPを実行する為には保存ディレクトリにあるphp.exeを絶対パスで指定するか、保存ディレクトリにカレントディレクトリを移してからphp.exeを指定して実行する必要があります。

それでは不便ですので、シェルでphpと指定するだけでphp.exeが実行されるように環境変数PATHにphp.exeまでの絶対パスを記述しておきましょう。

Windows 10の場合、環境変数の設定画面は様々なところからアクセスできますが、一番わかりやすい方法はまず、デスクトップの『PC(以前のWindowsではマイコンピュータと呼んでいた物)』を右クリックしてコンテキストメニューを開き『プロパティ』から『設定』ウィンドウを開きます。

PCのコンテキストメニュー

システムの詳細情報

『設定』ウィンドウが開いたら『詳細情報』の中にある『関連設定』から、『システムの詳細設定』をクリックしてください。『システムのプロパティ』ウィンドウが開きます。

このウィンドウの下の方に『環境変数』というボタンがありますので、それをクリックして環境変数ダイアログを開いてください。

環境変数設定

環境変数ダイアログ

環境変数ダイアログは、上がユーザ用の環境変数、下がシステム全体の環境変数なのでどのユーザでログインしていても利用できます。

どちらに設定しても良いですが、今回は下のシステム全体の環境変数PATHとして設定します。

下の『Path』を選択してから『編集』ボタンをクリックしてください。

環境変数名の編集

開いた『環境変数名の編集』ダイアログ(ダイアログ名がおかしいですね…)で、『新規』ボタンをクリックして、先ほどダウンロードして配置したphp.exeのあるディレクトリ(フォルダ)への絶対パスを指定してください。

php.exeへの絶対パスを指定

入力が終わったら『OK』をクリックして変更を確定させ、全てのダイアログを閉じてください。また、シェルも起動します。

シェルが再起動したら、以下のコマンドでphpのバージョンチェックをしてみます。

php -v

Visual C++ 再配布可能パッケージを求められる

※このWarningが表示されずPHPのバージョンが表示された方は既にVisual Studioランタイムが導入されているのでこの項は読み飛ばしてください。

Windows版PHPではMicrosoft Visual Studioのランタイム(コンピュータプログラムの実行時〈ランタイム〉にメインプログラムと常に同時に存在して利用される前提のライブラリ)が必要ですが、わたしのPCにはインストールされていなかったようです。

そこで、『Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ』を、以下のMicrosoft公式サイトからダウンロードし、インストールします。

公式サイト:『Visual Studio 2019 for Windows および Mac のダウンロード

その他のツールとフレームワーク』>『Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ』

ランタイムのダウンロードメニュー

vc14ランタイムインストーラー

インストーラーがダウンロードされたら、実行してランタイムをインストールしてください。

再度シェルを起動しなおし、上記コマンドを実行すると、今度は正しくバージョンが表示される筈です。

PHPが正しく動作した

php.iniを作成

ここで、PHPの設定ファイルであるphp.iniを作成します。

雛形としてphp.exeのあるディレクトリ内にphp.ini-developmentphp.ini-productionがありますが、今作成しているのは開発環境なのでphp.ini-developmentをコピーしてphp.iniというファイルを作ります。

ionCube Loaderの導入

PHPの実行に直接必要なわけではありませんが、当サイトが管理している『Pine Framework』や、その他の暗号化されたPHPコードを実行するにはionCube社(英国)が提供するionCube Loaderが必要です。

ionCubeは、PHPのソースコード暗号化・復号に於いて、一番シェアがある製品です。

ionCube Loaderのダウンロード

ダウンロードページLoader Download - PHP Encoder, protection, installer and performance tools from ionCubeにアクセスし、対象のLoaderをダウンロードします。

上記ではPHPの『VC15 TS版』をダウンロードしてインストールしたので、ここでは『Windows VC15 (64bits)』のzipファイルをクリックしてダウンロードする事にします。

ionCube Loaderのインストーラー

更新のお知らせが必要か?

zipリンクをクリックすると、Loaderの更新のお知らせが必要か聞かれます。特に必要なければ No thanks をチェックしてNextをクリックしてください。zipファイルがダウンロードされます。

ダウンロードされたzipファイル

ionCube Loaderのインストール

ダウンロードされたzipファイルを解凍すると、中にioncubeフォルダがあり、その中に以下のようなファイルがあります。

ioncubeディレクトリ

このフォルダ内で、PowerShellを立ち上げて以下のコマンドを入力し、PHPのビルトイン・サーバー(組み込みサーバー)を起動します。

php -S localhost:8080

built-inサーバーの起動

これで、localhost(お使いのパソコン)上でWEBサーバーが立ち上がり、ポート番号:8080で待受を開始しました。

※もし上記コマンドでエラーが出た場合は、既にポート番号:8080が別のアプリケーションで使用されていると考えられるので、任意の別の番号でサーバーを立ち上げてください。

ブラウザを立ち上げて、ioncubeフォルダ内のloader-wizard.phpにアクセスしてみましょう。

http://localhost:8080/loader-wizard.php

ionCube Loader Wizard

Installation InstructionsセクションにionCube Loaderのインストール手順が記載されていますが、このうちの『1. Download the following archive of Windows VC15 x86-64 Loaders: zip』は既に済んでいます。

次は 2. に示されているパスに、ioncubeフォルダをコピーして配置してください。※ioncubeフォルダ内でビルトインサーバーを起動してこのページを開いているため移動はしないでください

ioncubeフォルダをコピーしてPHPのフォルダ内に配置したら、3. に従ってphp.iniを編集します。

Edit the file C:\php-7.4.19-Win32-vc15-x64\php.ini and before any other zend_extension lines ensure that the following is included:

C:\php-7.4.19-Win32-vc15-x64\php.iniを編集し、他のzend_extensionの行よりも前に以下の行を追記してください。

zend_extension = "C:\php-7.4.19-Win32-vc15-x64\ioncube\ioncube_loader_win_7.4.dll"

zend_extensionというのは、PHPの発展に大きく貢献したZend Technologies Ltd.(英)のPHP拡張であるZend拡張モジュールの事です。

参考:ゼンド・テクノロジーズ - Wikipedia

参考:コア php.ini ディレクティブに関する説明

Alternatively, replace your current C:\php-7.4.19-Win32-vc15-x64\php.ini file with this new php.ini file.

或いは、現在のC:\php-7.4.19-Win32-vc15-x64\php.iniをリンクされているphp.iniファイルに置き換えてください。(※ローカルでのダウンロードになるため、ブラウザのセキュリティ警告が表示されます)

ここでは、zend_extension行をphp.iniの先頭に追記する方法を採用します。

php.iniにzend_extensionを追記

zend_extension行を追記したら、4. に従ってビルトイン・サーバーを再起動してください。ビルトイン・サーバーの再起動はPowerShell上でCtrl+Cを2回押すか、PowerShellウィンドウを一旦閉じます。

再度ionCubeローダーフォルダ内で立ち上げたPowerShellウィンドウで以下のコマンドを入力し、ビルトイン・サーバーを立ち上げてください。

php -S localhost:8080

ionCube Loader Wizardページの 5. に従ってページをリロードしましょう。以下のようなページが表示されればionCube Loaderのインストールは完了です。

ionCube Loade インストール完了

php.iniの追加設定

あとは、php.iniの最低限の設定です。

設定の仕方はCentOS上にPHPの開発環境を作成するに示しましたが、インストールされた初期状態のphp.iniの内容が違いますので以下に設定項目を記します。

最低限として以下を設定してください。

date.timezone = Asia/Tokyo
mbstring.language = Japanese
mbstring.detect_order = UTF-8,SJIS-WIN,SJIS,EUC-JP,JIS,ASCII
mbstring.encoding_translation = 0
mbstring.substitute_character = none

仮想マシン上のPHPをアップデートする

VirtualBox上のPHPのバージョンが7.4.18でしたので7.4.19にアップデートしようと思います。

SSHでログインした状態で、以下のコマンドでアップデートが出来ます。

sudo yum update --enablerepo=remi,remi-php74 php

PHPのアップデート

アップデート完了

CentOSにインストールされているPHPはNTS版で、TS版を利用するにはソースコードをコンパイルしてインストールする必要があるようですが、PHP自体が標準でThreadをサポートしていない為、敢えてTS版を導入するメリットはあまりないようです。ですからこちらはNTS版のままにしておきます。

まとめ

以上で、Windows ホストOSへのPHPのインストールは終了です。これで、VSCodeでPHPのプログラムコードを不自由なく編集できるようになりました。

競合の解決~ 365日の紙PHP(15日目)

公開日時:2016/07/08 08:01

さて、バージョン管理の締めくくりとして、今日は競合が起きた場合の解決方法を学びましょう。

競合は、複数人で同じプロジェクトを開発している時などに同じファイルを複数人が編集を行ってコミットしようとする際、全く同じ場所を複数人が修正していた、といった場合に起こります。

Git というバージョン管理システムはとても優秀で、大抵の場合、複数人のコミットは自動でマージ(日本語では「合流」と呼んでいるようです)が行われるのですが、流石に、同時に行われた全く同じ箇所の別の編集はどちらをどのように採用するかは Git にも判断がつきかねますので、人間の目と脳によるマージを行うよう、Git から警告される、ということです。

さて、では競合と解決について、実際にやってみましょう。

1. プロジェクトを2つクローンする

まず、テストのためのプロジェクトを開くため、NetBeans を立ち上げて下さい。もし、Git で既に管理されているプロジェクトしかない場合クローンがしづらいため、プロジェクトを右クリックして「閉じる」を選んで一時的に閉じておきます。(再び開きたくなったら ファイル > プロジェクトを開く で再開できます)

NetBeans画面

そうしたら画面上のメニューから チーム > Git > クローン で bitbucket のリモート・リポジトリ情報が表示されるので、「次 >」を選びます。

リモート・リポジトリ

次は分岐の選択です。まだブランチが作られていない場合は master のみが表示されるでしょう。やはり「次 >」を選びます。

リモート分岐画面

最後にクローンを行う場所と名前です。ここでクローン名を「firstlogin1」等のように別の名前でクローンして下さい。

クローン名の指定

「終了」をクリックするとプロジェクトがクローンされ、プロジェクトを開くかどうかの確認ダイアログが出ますので、「プロジェクトを開く」を選んで開いて下さい。

クローン完了

そうしたら、もう一度同じ作業(クローン)を行い、最後のクローン名の指定で「firstlogin2」のように別の名前でクローンをします。こうなります。

プロジェクト

ファイルブラウザでの確認

※下の画面、OS のファイルブラウザでの firstLogin は昨日までで作っていた元のプロジェクトです。

このようにクローン名を変えて、同じプロジェクトを2つ開きました。これから、わざと競合を起こしてみようと思います。

2. 上のプロジェクトを編集する。

まず、上のプロジェクト(firstLogin1)の login.php を開きます。私のプロジェクトではこんなコードになっています。

コード

そうしたら、どこか適当なところを選んで修正します。私は以下のようにしてみました。

if(!isset($_SESSION["logged"])){
    http_response_code(404);
    header("Location: index.php");
}
   ↓
if(!isset($_SESSION["logged"])){
    http_response_code(500);
    header("Location: error.php");
}

これをローカルリポジトリにコミットしてからプッシュします。プロジェクトタブで login.php を右クリックして Git > コミット を実行してから再び右クリックで、Git > リモート > アップストリームへプッシュ です。

なお、プッシュ というメニューも有りますが、こちらは一番最初にリモートリポジトリにプッシュする場合を除いては使わないほうが良いでしょう。現在はまだブランチが無いので結果は同じですが、ブランチを切って開発を行うようになると結果が変わってくる場合があります。

参考)「引数なしのgit pushは危険なので気をつけましょう 」ということのようです。

これで、firstLogin1 の修正がリモートリポジトリにプッシュされました。

3. 下のプロジェクトで同じ場所を編集する。

今度は下のプロジェクトです。元のコードは firstLogin1 と同じなので、全く同じコードが開かれるはずです。私は以下のように修正を行いました。

if(!isset($_SESSION["logged"])){
    http_response_code(404);
    header("Location: index.php");
}
   ↓
if(!isset($_SESSION["logged"])){
    header("Location: login.php");
    exit;
}

さて、この login.php を右クリックしてローカルリポジトリにコミットします。

そうしたら次は、アップストリームへプッシュです。すると、こんなダイアログが表示されました。

プッシュ失敗

同じ場所に別々の編集を行ったので、Git がどうあるべきなのか判断がつかないと報告してくれているのです。

そこで、「変更のプル」を選びます。次のような画面が出るので、手動でマージを行うため、「マージ」を選択します。(リベースについてはここでは行いませんがどういったものかは3分で理解できる!git-rebaseとmergeとの違いまとめの図を参考にしてください。)

ダイアログ1

次のようなダイアログが更に表示されるので、「解決」を選びます。

ダイアログ2

すると、マージ競合リゾルバが開きます。

マージ競合リゾルバ

プロジェクトタブの login.php や、開いているlogin.php のタブを見て下さい。ファイル名が赤色で表示されていますね? これが、競合が起きている証です。

さて、では手動でマージ(合流)しましょう。マージ競合リゾルバで受け入れ方を選択します。今回は、「両方を受け入れ」を選んでみました。その画面がこれです。

受け入れ後

if(!isset($_SESSION["logged"])){
    header("Location: login.php");
    exit;
    http_response_code(500);
    header("Location: error.php");
}

両方のコードが取り込まれたのでこの辺りが変ですね。適切に修正しましょう。マージ競合リゾルバの画面下の「OK」ボタンでリゾルバを抜けます。login.php の文字が青色に変わっているはずです。あとはこんな感じで正しく修正を行います。

if(!isset($_SESSION["logged"])){
    http_response_code(500);
    header("Location: error.php");
    exit;
}

そうしたらローカルリポジトリにコミットを行い、再びアップストリームへプッシュを行ってみましょう。

こんどは競合が起きずに正常にプッシュが行えたはずです。

プッシュ完了

4. Git でプッシュする場合の作法

ところで、今回はプッシュを行った後に警告がでましたが、本来はプッシュを行う前に競合が起きないように解決しておくことが推奨されます。

どうするのでしょうか?

まず、上のプロジェクトの login.php を開いて下さい。下のプロジェクトの login.php をプッシュしたので、内容が一致していませんね。

この状態で、上のプロジェクトの login.php の該当箇所をまた書き換えてみます。

if(!isset($_SESSION["logged"])){
    echo "テストだよ";
}

この状態でローカルリポジトリにコミットします。

そうしたら、いきなりアップストリームへプッシュするのではなく、まず「プル」します。login.php を右クリックして Git > リモート > アップストリームからプル です。

すると、先ほどのようなダイアログが出ます。

プルでのダイアログ

ここでマージを選ぶと、やはり、先ほどと同じダイアログが出るので手動解決します。やり方は全く一緒です。

手動解決

解決を行ってファイル名が青色になったらコミットを行い、晴れてリモートリポジトリのアップストリームにプッシュしましょう。

このように、ローカルで競合を解決してからプッシュを行うのが正しい Git での作法なのです。

ですからつまるところ、コードを修正する際には何よりも先にまず「アップストリームからプル」してリモートリポジトリのコードを取得し、それからコードの編集を始めるのが最も効率が良い方法です。

まとめ

今回までで、4 回にわたって NetBeans での Git の利用について説明してきましたが、大体ご理解いただけたでしょうか?

バージョン管理システムは、現在の IT の開発現場では無くてはならない物になりつつあります。

何時、どんな修正を加えたのかを記すだけでなく、いつでもどの状態にでも戻すことができ、チーム開発を円滑に進める事もできる Git は本当に有益なアプリケーションです。

怖がらずに是非 Git を導入し、効率的な開発を行っていってください。

明日からは、いよいよ、データベースを取り扱ってみようと思います。

リモートリポジトリからのクローン~ 365日の紙PHP(14日目)

公開日時:2016/07/02 05:19

リポジトリをクローン(複製)して別のパソコンで修正を行う

さて、今日は、昨日リモートリポジトリに push(プッシュ)したプロジェクトを clone(クローン)して、別のパソコンでもバージョン管理を使ったままで修正できるようにしてみましょう。

今回は Windows を利用しますが、1台しかパソコンが無い方は昨日までの NetBeans のプロジェクト(と、.git を別の場所に作っていた人は .git ディレクトリも併せて)を一時的にどこか別の場所に移動させて下さい。

WindowsのNetBeans初期画面

Git プロジェクトをクローンするには、「チーム」メニューを利用します。複数人で開発することを象徴する適切な名前ですね。

チーム > Git > クローン を選ぶと、「リポジトリをクローン」ダイアログが表示されます。このリポジトリURLに、昨日プッシュしたリポジトリのアドレスを記入します。Bitbucket の画面の赤枠の場所からアドレスをコピーして、リポジトリURLのフィールドにペーストしてください。

Bitbucketのプロジェクト画面

リポジトリをクローン

併せてユーザーID(メールアドレスではなく、ユーザーID)とパスワードを指定してください。

そして、リモートリポジトリのプロジェクトをクローンする場所を「クローン先」に指定します。通常はNetBeansのプロジェクトフォルダ内か、あるいはローカル環境の Apache のDocumentRoot 下が良いでしょう。

「次>」をクリックします。リポジトリが認識されてログイン認証に成功すると、クローンするリモート分岐の選択画面になります。

Git をはじめとするバージョン管理システムでは、「ブランチ」と呼ばれる開発上のバージョン分岐を作成して、別バージョンの開発を複数同時に進行させる事が可能です。ここでその別バージョンを選択できるのですが、現在は master ブランチしか登録されていないため、この画面に表示されるのは「master*」のみのはずです。

リモート分岐選択

これをチェックして選択したら、「次>」をクリックして下さい。

宛先ディレクトリ

Git に関するディレクトリとクローン名が指定できます。とりあえずはデフォルトのままの方が良いでしょう。

最後に「終了」をクリックすると、リモートリポジトリからプロジェクトがローカルにクローンされます。プロジェクトを開くか確認ダイアログが開きますので「プロジェクトを開く」をクリックしましょう。

確認画面

プロジェクトがクローンされました。

クローン完了

これで、別のパソコンでも同じプロジェクトをバージョン管理を使いながら開発が行えるようになりました。こちらで行われた修正についてもコミットを行ってからプッシュを行えば、リモートリポジトリに修正を反映できます。

まとめ

今日は、リモートリポジトリにプッシュされているプロジェクトを、別のパソコンにクローンする方法を勉強しました。

さて、ところで、2台のパソコンで修正を行っていると、修正内容がバッティングしてしまい整合性が保てなくなる可能性があります。

明日はこの問題について説明します。これを知れば、安全に複数のパソコンを使って開発が行えるようになります。

お疲れ様でした。

バージョン管理を使おう(Git)~ 365日の紙PHP(12日目)

公開日時:2016/07/02 05:18

Gitを使ったバージョン管理をしてみよう

さて、今日はソースコードのバージョン管理について勉強します。

バージョン管理というのは、ソースコードの作成・編集の過程を記録しておき、いつでも過去の任意の時点に戻ることができるようにする事です。

良いバージョン管理ソフトがなかった時代は、ソースコードのフォルダに project_20160223 のようにタイムスタンプを手動でつけてバックアップを取っていたりしましたが、現在はとても便利なアプリケーションがあるので、そういった煩わしい作業は不要です。

これから使うのは、現在最も便利なバージョン管理ソフトだと思われる Git です。

Git はそれまでのバージョン管理にはなかった分散バージョン管理システムになっていて、自分自身のパソコンと、ネットワークで繋がる別のコンピュータの2か所にリポジトリと呼ばれるソースコード保管領域を持っています。

複数人のチームで開発を行うときでも安全に開発が行えるよう、自分のパソコン(ローカルリポジトリ)で好きなだけ編集を行い、ある程度形になったところでネットワークの先にあるリポジトリ(リモートリポジトリ)に反映させるようになっています。

NetBeans を使えば、この Git を使ったソースコード管理がとても簡単にできます。

ローカルリポジトリ

では、まずはローカルリポジトリを作ってみましょう。NetBeans を立ち上げてください。

NetBeansのプロジェクト

firstLogin プロジェクトを右クリックして開くメニューから「バージョン管理」 > 「Gitリポジトリの初期化」を選んでください。

コンテキストメニューからリポジトリの初期化

ローカルリポジトリを作成する場所を聞かれます。デフォルトはプロジェクトフォルダ内です。リポジトリの場所を別にしたい場合は変えてもらって構いません。

リポジトリを作る場所の指定

OKをクリックすると、ローカルリポジトリ .git が作成されますが、リポジトリは隠しディレクトリになっているため、確認するには OS で隠しファイルを表示する設定にする必要があります。

Windows 8 / 8.1で隠しファイルやシステムファイルを表示する方法

Finderで隠しファイル・フォルダを表示 - Mac

※この .git ディレクトリが、バージョン管理の全てです。ですから、このディレクトリを削除したり他の場所に移したりすれば、バージョン管理が行われなくなります。管理していたプロジェクトをまっさらな状態にしたい時などは、この .git ディレクトリを削除してください。

NetBeans のプロジェクトウィンドウを見てみてください。

リポジトリ初期化直後のファイル

ファイル名が緑色になっているのがわかるでしょうか?

この緑色のファイルは、まだ Git に「コミット」と呼ばれる登録がされていないことを示しています。主に新規ファイルがこのように緑色になります。

では、ファイルの変更を登録してみましょう。firstLogin プロジェクトを右クリックして開くメニューから「Git」>「コミット」で登録できます。

コミットを行う

すると、コミットするファイルの選択ウィンドウが開きます。

コミットメッセージには、1行目に修正内容の概略2行目は空行3行目以降に修正内容の詳細を書く決まりになっていますが、その通りでなくともコミットは可能です。

では、今回は全てコミットしてみましょう。

コミットファイル確認画面

初めてのコミットの場合、リポジトリのユーザーが聞かれますので問題なければ「はい」をクリックしましょう。

コミットユーザー確認

コミットが完了すると、ファイル名が黒くなります。これでコミット完了です。

コミット完了

さて、ではバージョン管理の機能をちょっとだけ使ってみましょう。

まず、index.php を開き、

    $allow = array(
        "taro" => '$2y$10$9xUPdF/l2deV2gCo2BbqAeJ6Znh1eTDfQ4e7Rgy0Jy8lzvmyYIZcu',
        "hanako" => '$2y$10$nBaOXLHZgXAGobWD1JZMxOnLUwQ1BAYdxJpyqQSJRfVxRwQ/o6ln2',
        "kenji" => '$2y$10$u2GdyeCYUtImZAgkyqlpYeWrIsuLwmXtsxCzCOX7NHhEO/q0AkBE.',
    );

このあたりをごっそりと削除してしまいましょう。思い切ってやってしまって構いません。削除したら保存してください。修正を加えたファイル名は青色で表示されます。

同様に login.php についても変更してみましょう。分かりやすいように、何箇所も修正して保存を繰り返してみてください。

    <body>
        <h1>ようこそ</h1>
        <p>Git のテストです。<?php echo htmlspecialchars($_SESSION["user_id"], ENT_QUOTES, "UTF-8");  ?>さん。</p>
    </body>

このような修正を加えた後で「やっぱり元に戻したい」という場合は、戻したいファイルを選択して右クリックで開くメニューから「Git」>「変更内容を元に戻す」で戻したい内容を選び「元に戻す」を選択します。

復元メニュー

復元確認

修正内容が元に戻ったことを確認してください。

復元後

このように Git では簡単に前回のコミット時の状態にソースコードを戻す事ができます。

次は様々な修正を加えた後、コミットしてください。修正を繰り返しながら、コミットを何回かしてみると良いでしょう。その際、コミットコメントをつけて、どんな修正をしたか分かるようにしておきましょう。

ある程度修正を繰り返したら、修正を行ったファイル、またはプロジェクトを右クリックして「Git」>「チェックアウト」>「リビジョンのチェックアウト」を選んでください。

チェックアウトメニュー

チェックアウトするリビジョンの選択画面になりますので、右上の選択ボタンからリストを表示します。

チェックアウトするリビジョン選択1

チェックアウトするリビジョン選択2

リストから戻したいコミットを選択して「選択」ボタンをクリックしてください。リビジョンが選択されたら「チェックアウト」ボタンをクリックしてください。

コミット時にコメントを書いていれば、そのコメントの1行目がここに表示されているのが分かるでしょう。コミットコメントを書く理由はこのようなものです。ですから、できるだけ修正内容の分かるコメントを書く習慣をつけておくと良いでしょう。

チェックアウト後

ソースコードの内容がコミット時のものに戻ったことが確認できたでしょうか?

このように、Git を使えばいつでも好きな時点のコミットの状態にソースコードを一瞬で戻すことができます。コミットの情報はすべて記録されているので、もっと古いコミットの時点のコードに戻すことも可能です。

「ソースコードをいじりまくったら全く動かなくなって元にもどせなくなってしまった」といった、初歩的な悩みから開放され、何度でも望み通りの修正を行えるようになります。

NetBeansの履歴管理

加えてNetBeansでもファイルの保存を全て記録している「ローカル履歴」機能があるため、この機能を使ってもファイルの修正を取り消す事ができます。

修正を取り消したいファイルを右クリックして「履歴」>「履歴を表示」を選んでください。

NetBeansの履歴メニュー

過去の保存履歴とその時点でのソースコードと現在のコードとの差分が表示され、部分単位でいつでも過去のコードに戻す事ができます。なお、ソース画面に戻りたい時は左上の「ソース」ボタンをクリックしてください。

NetBeansの履歴管理機能

まとめ

Git の右クリックのメニューを見ていただいた通り、Git は様々な管理機能があるのでここで詳しく説明することは避けますが、少しずつこのコーナーで触れていこうと思います。

今日はまず、ローカルリポジトリを作成してソースコードをバージョン管理する方法を学びました。これでソースコードを壊してしまう心配から解放され、好きなだけプログラムに改良を加える事ができるようになりました。

明日はリモートリポジトリを作成して、変更内容をリモートリポジトリにプッシュしてみましょう。リモートリポジトリを使うと複数人での開発が容易になるほか、万が一お使いのパソコンが壊れてもプロジェクトをリモートリポジトリからチェックアウトする事で、大切なソースコードを失わずに済みます。

お疲れ様でした。

リモートリポジトリの利用~ 365日の紙PHP(13日目)

公開日時:2016/07/02 05:18

さて、今日はリモートリポジトリをつくります。ご自宅に別のパソコンがあればそこにリポジトリを作っても良いですが、インターネットに公開していないのであれば外出先からそのリポジトリにアクセスできず少し不便です。

今日は初心者にも簡単に扱えるWEBサービス「Bitbucket」を利用してリモートリポジトリを作ってみましょう。

Bitbucketにアカウントを作る

Bitbucket はフリーのホスティングサービスです。Git の他、Mercurial という別の分散バージョン管理システムのリポジトリを作成できます。

Bitbucket

Bitbucket

5ユーザーまでの利用は無料となっています。同じようなサービスで有名なものに「Github」というものがありますが、こちらは無料プランでは非公開リポジトリを作ることができません。いくらでも見られて構わないのであれば Github を利用するのも良いですが、ひっそりと勉強したいのであれば無料で非公開リポジトリの作れる Bitbucket が良いようです。

Bitbucketのプラン

では、リポジトリを作成していきましょう。Small teams 無料 の Try this plan をクリックして下さい。アカウント用の E-mail アドレスが求められます。

アカウントの作成

E-mail アドレスを入力すると、アカウントの詳細を入力する欄が表示されます。お名前と強固なパスワードを入力して下さい。強固すぎて忘れてしまわないように、メモをとって他人に見られないところに保管しておきましょう。

アカウントの作成2

名前とパスワードを入力して Continue をクリックすると、確認用の E-mail が送信されます。

アカウントの作成3

E-mail を確認しましょう。Verify my email address で確認です。なお、下図のとおりスマフォのアドレスでも大丈夫のようです。

アカウントの作成4

E-mail アドレスの確認が終わりました。あとは Bitbucket で利用するアカウント名を入力して続行して下さい。

アカウントの作成5

このように、Dashboard ダッシュボードが開けばアカウントの作成は終了です。もしスマフォで登録された方は、画面右上の人のアイコンからログアウトを選ぶことで、パソコンから再ログインできます。

ダッシュボード

では、リポジトリを作成してみましょう。ダッシュボードの「リポジトリの作成」をクリックして下さい。新規リポジトリの作成画面が開きます。

リモートリポジトリの作成

Repository name リポジトリ名は「firstLogin」にしましょうか。非公開リポジトリを作るには、アクセスレベル「これは非公開リポジトリです」にチェックが入っているか確認してください。入力したらリポジトリの作成をクリックしてください。

リモートリポジトリ作成2

空のリポジトリがセットアップされました。

リモートリポジトリ作成3

ソースコードをプッシュする

さて、リポジトリができたらローカルにあるソースコードをリモートリポジトリにプッシュしてみましょう。

「Command line」 の 「I have existing project」をクリックすると情報がプルダウンされます。赤線 https:// で始まるURLをコピーしてください。

プロジェクトのプッシュ

次は NetBeans のプロジェクトを右クリックし、「Git」>「リモート」>「プッシュ」を選びます。

プロジェクトのプッシュ2

「Git リポジトリの場所を指定」でリポジトリURL に先ほどのURLを指定し、ユーザーとパスワードを入力してください。

プロジェクトのプッシュ3

次へをクリックすると、ローカルの分岐選択になります。master -> master[A] を選択して次に進んでください。

プロジェクトのプッシュ4

次は、ローカル参照を更新します。ここはそのまま終了をクリックしましょう。

プロジェクトのプッシュ5

ローカルのソースコードがリモートリポジトリにプッシュされます。プッシュが終わると、確認画面が出ます。「はい」をクリックしてウィンドウを閉じましょう。

プロジェクトのプッシュ6

リモートリポジトリの確認

さて、ではリモートリポジトリの状況を確認してみましょう。ブラウザで Bitbucket を開きます。画面上の「リポジトリ」から「最近更新したリポジトリ」を開いてみましょう。

最近のプッシュ

赤枠に、プッシュされたローカルリポジトリでのコミットが表示されています。

コミット履歴

コミット内容を確認してみましょう。どのコミットでどのような変更が加えられたかの差分が一目でわかるようになっています。

差分表示

まとめ

このようにリモートリポジトリにソースコードの修正状況をプッシュしておくことで、過去のある時点を指定してソースコードを取り出すことができるようになります。

明日は今日プッシュしたソースコードを今度はローカルにクローン(複製)してみます。クローンを使うと別のパソコンでもソースコードの修正ができるようになりますね。

その場合、元のパソコンと新しいパソコンで同じソースコードを修正してしまう場合があります。この時 Git は出来るだけ自動でソースコードの整合性を保つように補完してくれますが、全く同じ場所に別の修正がされた場合はコンフリクト(衝突)が起こります。こうしたコンフリクトが起きた場合にはどうすれば良いかについても簡単に解説していこうと思います。

お疲れ様でした。

記事リンク