PHPにphpspreadsheetを入れようとしたら、 思ってたより時間がかかった話


<h3>何をしようとしてた？</h3>
phpspreadsheetを触ってみたかった。WindowsのXAMPP環境に、composerをインストールし、composerからphpspreadsheetをインストールしようとしていた
<br>




<br>
<h3>遭遇したエラー</h3>

```  
    Problem1 
  - phpoffice/phpspreadsheet 1.28.0 requires ext-gd * -> it is 
  missing from your system. Install or enable PHP's gd extension.
 your system. Install or enable PHP's gd extension. 
 ```  

``` 
   Cannot use phpoffice/phpspreadsheet's latest version 1.28.0 as 
it requires ext-zip * which is missing from your platform.
In PackageDiscoveryTrait.php line 317:
 Package phpoffice/phpspreadsheet has requirements incompatible with 
 your PHP version, PHP extensions and Composer    
  version:           
    - phpoffice/phpspreadsheet 1.28.0 requires ext-zip * but it is not present.      
 ```


``` 
Cloning failed using an ssh key for authentication, enter 
your GitHub credentials to access private
When working with _public_ GitHub repositories only, head to
https://github.com/settings/tokens/new?scopes=&description
=Composer+on+自分のPCのユーザー名+2023-04-12+0644 to retrieve a token.
This token will have read-only permission for public information only.
When you need to access _private_ GitHub repositories as well, go to 
https://github.com/settings/tokens/new?scopes=repo&description
=Composer+on+自分のPCのユーザー名+2023-04-12+0644
Note that such tokens have broad read/write permissions on your behalf, 
even if not needed by Composer.
Tokens will be stored in plain text in "C:/Users/m230528/AppData/Roaming/
Composer/auth.json" for future use by Composer.
For additional information, check https://getcomposer.org/doc/articles/
authentication-for-private-packages.md#github-oauth
Token (hidden):
 ```

<br>


<h3>エラーの意味</h3>
<ul>
<li>"phpoffice/phpspreadsheet 1.28.0 requires ext-gd * -> it is 
  missing from your system." <br>⇒　モジュールgdがないから、phpspreadsheetインスト無理よ</li>
<br>
<li>"Cannot use phpoffice/phpspreadsheet's latest version 1.28.0 as 
it requires ext-zip * which is missing from your platform." ⇒　モジュールzipがないから、phpspreadsheetインスト無理よ</li>
<br>
<li>"This token will have read-only permission for public information only.
When you need to access _private_ GitHub repositories as well, go to 
https://github.com/settings/tokens/new?scopes=repo&description
=Composer+on+自分のPCのユーザー名+2023-04-12+0644" 
<br> ⇒ Gitのあんたのリポジトリ、読み取り権限しかないから、phpspreadsheetインスト無理よ</li>
<br>
<li>"For additional information, check https://getcomposer.org/doc/articles/
authentication-for-private-packages.md#github-oauth
Token (hidden):"
<br>⇒ Gitのあんたのリポジトリ、トークンの有効期限が切れてるから、新しいトークン手に入れて入力しないと、phpspreadsheetインストさせないわよ
</li>
<h5>できないできない言うなぁ(怒)</h5>
<h5>なんやTokenて。突然話しかけてくんなぁ(焦)</h5>
</ul>

<br>
<h2>composerに、phpspreadsheetをインストールするには？</h2>
<ul>　
<li>1. Windowsにcomposerを手動でインストール</li>
<li>2. XAMPPのPHPのPATHが通ってるか確認</li>
<li>3. composerのディレクトリ<C/ProgramData/ComposerSetup/binに、<br>composer.jsonを作成</li>
<li>4. composer.jsonのパスを、システム環境変数に追加</li>
<li>5. composerのパスが通ってるか、確認</li>
<li>6. XAMPPのphpフォルダにある、php.iniで"コメントアウトになってる行２か所"を削除</li>
<li>7. XAMPPのhtdocsフォルダで、コマンド"composer install"を入力 ⇒ これでインストール成功♪</li>
</ul>

<h3>PHPspreadsheetの公式にも、composer.jsonを作らないと追加モジュールのインストールはできないよ、と書いてある</h3>

https://phpspreadsheet.readthedocs.io/en/latest/

⇒ 公式読んでも理解できなかったワシ
<br>

<br>
<h3>3から解説するぜ</h3>
<br>

<h2>3. 作成するcomposer.jsonの中身</h2>

``` 
{ 
    "require": { 
        "phpoffice/phpspreadsheet": "^1.28.0" 
    } 
}
 ```
<br>
<h3>4. システム環境変数に追加する、composer.jsonのパス</h3>

``` 
1. C/ProgramData/ComposerSetup/bin/composer.json
 ```

composer -vでcomposerと表示されたら、パスが通ってる

<br>
<h3>6. XAMPPのphpフォルダにある、php.iniで"コメントアウトになってる行２か所"を削除</h3>

``` 
extension=gd
extension=zip
```

<br>
<h3>これでcomposer installしたら、成功した♪</h3>

<br>
<h5>モジュールを追加で入れるって、メンドクセー</h5>


Gitのトークンの更新や読み取り権限の設定は、Gitにログインしたら自然にできた。
<br>

<br>
<h3>助けてもらったサイトさま</h3>

https://qiita.com/wallkickers/items/e895495172b5e7371f38

https://qiita.com/suke/items/770bccf8a43f9247daf5