Laravelの導入にあたりPHPのライブラリ管理ツールのcomposerをインストールしようとするとエラーが発生する。
インストールのコードは公式サイトを参照している。
公式サイトのインストール手順
公式サイトより以下コードを使用。
php -r "copy( 'https://getcomposer.org/installer'、'composer-setup.php');"
php -r "if(hash_file( 'sha384'、 'composer-setup.php')=== '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3'){echo 'インストーラー検証済みphp ');} echo PHP_EOL; "
php composer-setup.php
php -r "unlink( 'composer-setup.php');"
## 解決方法まとめ エラー解消のために実行することは2つ。
(1) homebrewでopensslのインストール。
(2) Google翻訳を解除し原文のコードを使う。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
詳細は以下ご参照。
## 1行目のエラー
$ php -r "copy( 'https://getcomposer.org/installer'、'composer-setup.php');"
Parse error: syntax error, unexpected ''https://getcomposer.org/insta' (T_CONSTANT_ENCAPSED_STRING) in Command line code on line 1
>エラー内容
Parse error: syntax error, unexpected ''https://getcomposer.org/insta' (T_CONSTANT_ENCAPSED_STRING) in Command line code on line 1
これはOpenSSLがインストールされていないために発生するエラー。
macOS 10.12 (Sierra) 以降の macOS では、 デフォルトで OpenSSL がインストールされていない。
### 解決策 Homebrewをインストールして、opensslをインストールすればOK。
# homebrewのインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# opensslのインストール
brew install openssl
上記実行後に1行目を再度実行すればOK。
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
## 2行目のエラー 続いて2行目のコードを実行してもエラーが発生する。
$ php -r "if(hash_file( 'sha384'、 'composer-setup.php')=== '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3'){echo 'インストーラー検証済みphp ' );} echo PHP_EOL; "
Parse error: syntax error, unexpected ''sha384'' (T_CONSTANT_ENCAPSED_STRING) in Command line code on line 1
>エラー内容
Parse error: syntax error, unexpected ''sha384'' (T_CONSTANT_ENCAPSED_STRING) in Command line code on line 1
### 解決策 google翻訳した状態でコードを貼り付けたことでシンタックスエラーが発生している。
原文に戻し、実行すればOK。
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
composerのバージョンによってコード内容が異なるため、最新コードは公式ページで確認のこと。
$ php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified
コードが実行されるとInstaller verified
が表示される。
3行目は問題なし
3行目は指定通りのコードを実行すればエラーが発生せず実行できる。
$ php composer-setup.php
All settings correct for using Composer
Downloading...
Composer (version 2.0.8) successfully installed to: /Users/s01386/projects/composer.phar
Use it: php composer.phar
4行目のエラー
こちらも2行目と同じくgoogle翻訳されたことが原因。原文に戻してコードを実行すれば処理できる。
php -r "unlink('composer-setup.php');"
以上でcomposerのインストールが完了。
## 翻訳後のコード比較 2行目はコード内に日本語が混入しているのでエラー発生はわかるが、4行目のコードは翻訳前後で英語のみのため、全く同じに見える、、
php -r "unlink('composer-setup.php');" #翻訳前(原文)
php -r "unlink( 'composer-setup.php');" #翻訳後
比較してみると、翻訳後に空白が追加されていることがわかる、、
Google翻訳は便利だけどコードの場合は注意が必要。