Laravel を MacOSにインストール – つづき

さてようやく MacOS上で composerがインストールできました というか既に何ヶ月か前にインストールしていたのに忘れていたのです

そもそも composerは何か? と言えば、phpを用いて web programを書くときに必要な諸々をサクッとインストールしてくれる便利な小槌と思えばいいのです まず行うことは

$ cd ~/target-folder/

とすることにより、目標とする target-folderに移動します

次いで

$ composer create-project "laravel/laravel=5.5.*" projectName

とすることにより、Laravel version 5.5一式をこのフォルダにインストールします これは大量のファイルをダウンロードしますので数分間かかりますよっ

$ cd projectName

とすることにより今作成したプロジェクト・フォルダに移動します そうすると artisanという phpで書かれたコマンドがこのフォルダには既にインストールされていまので、

$ php artisan --V

とすれば、僕の場合には
Laravel Framework 5.5.44というものが戻ってきました 実はこの artisanというプログラムは local serverを立ち上げるものであり、これで local serverを立ち上げるとその後 Laravelでプログラムを開発する時に面倒なことを考えずにできるのです

$ php artisan serve

これで local serverが  ip address = 127.0.0.1, port = 8000で立ち上がりましたので、ブラウザのアドレス・バーで localhost:8000とするかあるいはhttp://127.0.0.1:8000と打ち込めば見事 Laravelのデモページが立ち上がります

Laravelデモページ

Laravel再開

一度は挫折した Laravelに再度チャレンジです Macでインストールするのと Windows10でインストールするのでは大分やり方が異なるようです

Windows10では まずは XAMPPをインストールした方が良いようですね それでは まずは Macから ここは Terminalでの作業になりますね

まずは composerのインストールです これは簡単ですよ
$brew install composer

ところがここで以下のような膨大なエラー出現しました

==> Downloading https://getcomposer.org/download/1.8.0/composer.phar
######################################################################## 100.0%
Error: parent directory is world writable but not sticky
Please report this bug:
  https://docs.brew.sh/Troubleshooting
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/tmpdir.rb:93:in `mktmpdir'
/usr/local/Homebrew/Library/Homebrew/utils/fork.rb:28:in `safe_fork'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:743:in `build'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:317:in `install'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:326:in `install_formula'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:256:in `block in install'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:254:in `each'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:254:in `install'
/usr/local/Homebrew/Library/Homebrew/brew.rb:88:in `'

こんなことで慌ててはいけません 何だか rubyで書かれた Homebrew管理プログラムが色々とシステムに書き込もうとする時に「それは越権行為だ!」というようなエラーですね こういう時は Google叔父さんに聴いてみます 検索したのは

Error: parent directory is world writable but not sticky
Please report this bug:

というものですが、そうすると早速このページにヒットしました これに従い$ sudo chmod +t /private/tmp
$ sudo chmod +t ~/Library/Caches/Homebrew
とすると Treminalからは何の返答もありませんが、再度 $brew install composerと打つと

==> Downloading https://getcomposer.org/download/1.8.0/composer.phar
Already downloaded: /Users/transradial/Library/Caches/Homebrew/downloads/5f21a93cda75f6de1acae0850021a00add848552341d23d14aa9e6afc17de4dd--composer.phar
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/composer
Target /usr/local/bin/composer
already exists. You may want to remove it:
  rm '/usr/local/bin/composer'

To force the link and overwrite all conflicting files:
  brew link --overwrite composer

To list all files that would be deleted:
  brew link --overwrite --dry-run composer

Possible conflicting files are:
/usr/local/bin/composer
==> Summary
🍺  /usr/local/Cellar/composer/1.8.0: 3 files, 1.8MB, built in 2 seconds

というように何だか インストールされたみたいです ただ、僕の場合には既に composerがインストールされているのでそれを修正した方が良いよ と出ているようですので、この指示のとおりに$ rm '/usr/local/bin/composer'
$ brew link --overwrite composer
$ brew link --overwrite --dry-run composer
とすると見事にアンイストールできました そして今度は Laravelのインストーラーをインストールするために

$ composer global require "laravel/installer"

とすると 何やらたくさんのファイルが downloadされて インストール準備段階に入りました

実はこの段階でこのインストーラーなどのパスを通さねばなりません それで

export PATH="$PATH:$HOME/.composer/vendor/bin"

という一文を ~/.bashrcの最後に書き加えねばなりません これには vimとか visual studio code (VisutalStudio Code = VS Code)を用いねばシステム領域の書き換えはできませんので、

$ code

とコマンドラインから VS codeを立ち上げようとすると何と以下のエラー出現

/Users/transradial/.pyenv/shims/python: line 21: /usr/local/Cellar/pyenv/1.2.6/libexec/pyenv: No such file or directory
/usr/local/bin/code: line 10: ./MacOS/Electron: No such file or directory

さあ困った そこで、今度は”/usr/local/Cellar/pyenv/1.2.6/libexec/pyenv”で Google検索するとすぐにここにヒットしました この指示のとおりに

$ pyenv rehash

としたところ解決し、VS codeをコマンドラインから立ち上げることが可能となりました 要するに pyenvという python仮想環境が少し破壊されたので、それを自己修正したのですね さて、このようにそと VS codeでパスを無事通し、それを現在のコマンドラインに反映させるために

$ source ~/.bashrc

したところ、無事

$ laravel --version
Laravel Installer 2.0.1

となり さあこれで laravelをインストール可能となりました

さて、今度は Windows10でも行いたいと思いますが、こちらは仮想サーバーを別に立ち上げねばならないのかな? それとも php artisanコマンドで十分なのかな? 未だ検証していません これからの楽しみですが、時間があるかなあ???

PHP 7.1への更新成功

Zenlogicにサーバーを移行しましたが、その結果、PHPも5.3から7.1に upgradeすることが可能となりました

しかし、これをしたところ、先日記載したように画面が真っ白となる不具合が発生し、慌てて 5.3に戻したのです

そして行ったことは WordPressのデータを全て backupしました そして、それをhttps://の領域に移し、そこで再度 WordPressをインストールしたのですが、残念ながら管理者ID/PWがうまく移行できず、管理者権限で入れなくなってしまったのです

これには困りました

そこで、以前の PHP5.3での WordPressに戻し、今度 Pluginを停止し、そして再び PHP7.1にしましたところ、Wordpressが正常に作動していることを確認しました

ということで、現在は www.kamakuraheart.orgでWordpress/PHP7.1が作動しています 何故PHP7.1に拘ったかと言うと (1)速度が PHP5.3より五倍程度早くなることが確認されている (2)何しろ Laravel 5.5では PHP >= 7.0が必須なので

ということでした 目出度しです

やばっ

これは恐ろしいことになりそうでした というかブログ書込み何時の間にか久しぶりでした この1週間あまりの間に例によって色々ありました

今朝この早朝の羽田空港全日空ラウンジで「やばい」と思ったことの筆頭は、何とこのブログにアクセスできなくなっていたのです いや正確にはアクセスできるのですが、参照できません つまり WordPressが作動していないのです

自分で何をしたかを思い出しました 実はこれから先の10年を見越して、PHPを 5.3から 7.1に upgradeしたのです それがまずかったのですねえ その結果 WordPressが作動しなくなったのです 通常 PHP 7.1は PHP5.3に対して上位互換性がかなりの部分保たれていると思うのですが、何れにしても作動しなくなったので慌てて今戻しました これにより再びブログにアクセス可能となりましたねっ

さて、何で 7.1にしたかというと、今ここ数日ですが、のめり込みつつあるのが、以前も挑戦した Laravelなのです この最新 Long-Term Support (LTS) versionが Laravel 5.5なのですが、それに挑戦始めたのです 問題は Laravel 5.5は絶対的に PHP > 7.0が必要なのです それで深く考えずに kamakuraheart.orgの PHPを 7.1にしたのです それが今朝の顛末でした

これから 6:15AM発の千歳便で札幌東徳洲会病院に日帰りで入ります きっと寒いだろうなあ きっと雪に覆われているのだろうなあ

うーん 何だか難しいなあ

Dynamic DNSというものの存在を教えて頂きました しかし、何だか難しいなあ 実際にいじくって自分でやらないと理解できないような気がします

それよりも今直面しているのは これが理解できないのです うーん何と説明すれば

まず、Laravelを /Sites/myapp/にインストールしました

そして、/myapp/に移動し、$php artisan serve でサーバーを立ち上げました

そして、/Sites/myapp/routes/web.php の中に /helo でroutingを行う命令を書きました

そうすると アドレスバーで localhost:8000/helo とすれば、そのページが出力されます

ところが、ここで artisanを停止し、XAMPPで apacheを立ち上げます 僕のapacheの document rootは /Sites/にしてありますので アドレスバーで localhost:8000/myapp/helo とすれば同じ出力されると思ったのですが サーバーが反応しません

うーん 分からない apacheのポートは何番なのでしょうか?

分からない分からない分からない

Laravel 5.3の download

さて、昨日 Laravel5.3を downloadしようしたらば最新版の5.4が downloadできてしまい、5.3をdownloadできなかった話をしました

しかし、これは当たり前でしたね だって、

$ composer create-project laravel/laravel=dev-develop laravel53

などと打ち込み、5.3をdownloadした気分になっていたからです composerのコマンド体系を見れば、これでは laravel最新版を downloadすることになりますよね いやきっと そのように予想できます

従って、Laravelの開発ページを見に行く必要があります そこで、githubを探すと ここにありましたね

さて、このページの左上の方を見ればこのようになっています

Github

ここでこのselect buttonをいじくると 出てきました 5.3が

Laravel5.3の選択

これで5.3を選択し、downloadなりすれば良さそうです とは言うものの、もうすぐ朝カンファランス そして 怒涛の外来診療ですのでとりあえずここまでにしておきましょう

 

Laravel 何だかややこしいな

Laravelの最新version = 5.4です しかし、Web上の情報はほとんどが良くて 5.3 大多数の日本語サイトは 4.3です 要するにものすごいスピードで version upされているようなのです

それはそれで嬉しいことですが、問題は言語仕様がどんどん変化しており、英語の on-line manualを読まねば最新の仕様がわからないという点です これは辛いです 仮に日本語だとしても理解は困難な上に、それが英語であればどんな事態になるか想像できますよね

という訳で Kindleで書籍を探しました 日本語書籍は最新のものでも Version 5.1です 英語のものでようやく 5.3です そして、5.1から 5.3に version upした時点で Laravelの dirctory構造が大きく変更されたようなのです 具体的に僕が気づいたのは Routingの directoryが大きく変更になり、この時点で日本語サイトや日本語書籍はあまり参考にならなくなってしまいました

それでは、敢えて down gradeして、Version5.3をインストールすれば良いとも思いますよね それでサイトを探し、このサイトに巡り会いました そして、ここに書いてあるように

$ composer create-project laravel/laravel=dev-develop laravel53 --prefer-dist

と打ち込みましたところ、見事にエラーで撃沈 そこで今度は最後の –prefer-distをとって打ち込みました

$ composer create-project laravel/laravel=dev-develop laravel53

そうするとLaravelのインストールが始まりました しかし、ここで

$ php artisan -V

と打ち込むと、そんなコマンド無い、とエラーが出たので、

$cd laravel53

としてから、

$ php artisan -V

と打ったところ、今度は反応しました しかし、しかし、しかし、その答えは

$ php artisan -V
Laravel Framework 5.4.15

という悲劇的なものでした これを受けて laravel53/ directoryを完全に削除するしかありませんでした 要するに、指定の laravel versionをうまいこと導入する手段は無いのでしょうか

Laravel すぐに躓き

さて、このページにあるように routingを試してみました ところが、ここに書いてあるファイルがそもそも存在しないのです このページではどうやら Laravel 4.xでの説明のようですが、僕がインストールしたものはどうやら Laravel 5.4という最新 versionなのです

結局、Laravel 5.4に web manualを参照すると、どうやら routes/ folderの中の  web.phpに書くことで routingがされそうです このファイルは最初はこのようになっています

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

この最後に以下をつけたしてみました

Route::get('/helo', function () {
    return '<h1>Hello Worl</h1>
this is sample page.'; });

そうして、 localhost:8000/heloにアクセスしたところ、やったね、

やったね

出ました

おおおおお

指示にある通り 開発用 local serverを立ち上げました 実は、何時も XAMPPで立ち上げているので最初うまくいかず、XAMPPの Apacheを停止してからやったところうまく行きました Browserの address barに下記を打ち込みました

http://127.0.0.1:8000

これは要するに local server IP address = 127.0.0.1の port=8000にアクセスしろ、という命令ですね そうすると下記の画面が表示されましたよっ

Laravel開発画面

うわあ なんかかっこいい 僕みたいなミーハーはこれだけでもう心キュンです

おお すごい

そのまま指示に従ってやってみました

$cd myapp
$ php artisan serve

そうすると 見事開発用サーバーが立ち上がりました

Laravel development server started: <http://127.0.0.1:8000>

問題は、この後も僕の根気が続くかですね まず 99%は途中で投げ出し、その内忘れてしまいまから