【Wordpress】アップロード時の"upload_max_filesize"エラーと"Unable to create directory"エラーを対応

# 前提
* AWSのEC2インスタンスで稼働しているお手製HTMLホームページを、Wordpressに移行した後に発生したエラーについて記載します。
    * Wordpressインストールするまでの流れを解説した前回の記事はこちら：[WordpressをEC2インスタンスにインストールする方法（Apacheのバーチャルホスト設定方法・Wordpress用DB作成方法も解説）](https://qiita.com/Ryo-0131/items/a6dab55ea5b54b6e10b7)

## テーマ導入時のファイルアップロード上限値エラー

* 有料テーマをWordpressにインストールしようとZIPフォルダをアップロードすると以下エラーが表示されました。

```terminal
The uploaded file exceeds the upload_max_filesize directive in php.ini.
```

* 調査したところ`php.ini`でアップロードファイル上限値のデフォルトが2MBになっており、ここを調整すれば解決できることのこと。
* EC2インスタンスに接続し、以下で`php.ini`を確認します。

```
php --ini
```

* `Loaded Configuration File`があるディレクトリに移動します。
* 自分の環境では、` /etc/php/7.4/cli/php.ini`だったので、こちらへ移動し`sudo vi php.ini`で以下を修正。

```
* upload_max_filesize：1ファイルあたりのアップロード最大サイズ
    * 20Mとしました
* post_max_size：1回のアップロードの合計最大サイズ
    * 40Mとしました
* max_execution_time：最大実行時間
    * 300としました
```

> memory_limitはupload_max_filesizeより小さい値にしないようにします。
memory_limit 　>=　 post_max_size　 >=　 upload_max_filesize　となるように。
引用元記事：[WordPressにアップロード可能なファイルサイズを大きくする
](https://tanojinfrom30.com/2021/03/21/upload-max-filesize/)

* memory_limitはデフォルトで-1（無制限）となっていたのでこのままにしました。
* `sudo service apache2 restart`でApacheを再起動します。
    * php-fpmを使用している場合はこちらの再起動も必要らしいです。
* Wordpress画面にアクセス...しかしまだファイル上限値エラーになってしまう。再びググり、記事「[WordPressでアップロードサイズの上限を変更する方法まとめ](https://fox-wp.com/wordpress-upload-filesize/)」を見たところ、「ファイルのアップロード上限サイズが変わらない場合、.htaccessファイルの編集を行います」とあったので、Wordpressディレクトリのある`/var/www/html/wpsample_homepage`で`.htaccess`を作成して以下を記載。

```.htaccess
php_value upload_max_filesize 20M
php_value post_max_size 40M
php_value max_execution_time 300
php_value max_input_time 300
```

* Wordpressのメディアアップロード画面にいくと最大がちゃんと「20MB」と表示されていることを確認！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710373/d7f6dd23-aebd-d2d5-a7f0-55fb4ec19fd7.png)

* 上記実施後に再びアップロードすると、エラー内容が以下のように変わりました。

```
Unable to create directory Is its parent directory writable by the server?
```

* 以下記事にディレクトリへの許可権限が問題とあったので、以下コマンドを実行。
    * 参考：[WordPressで画像アップロード時にUnable to create directoryのエラーになるときの対処法](https://qiita.com/mprumem/items/095a0375a4a5f35e40dc)

```
chmod 755 wp-content
sudo chmod 755 wp-content
sudo service apache2 restart
```

* 上記では変わらなかったので、許可を777に変更して実行。

```
chmod 777 wp-content
sudo chmod 777 wp-content
chmod 777 wp-content
sudo chmod 777 wp-content
```

* 上記エラーが消えテーマのインストール画面へ。しかしFTP情報を入力してくださいと表示されます。FTPは設定しないので何の問題かと調べたところ、wordpress配下の所有者とgroupをapache所有としていなかったからだと判明。
    * 参考：[WordPressで編集できない場合はフォルダの所有者を変更しよう](https://haniwaman.com/edit-owner/)
* apache所有者は、ubuntuではwww-dataらしい。ということで、パーミッションを変更！
    * 参考：[ubuntuのapacheユーザーとグループ](https://qiita.com/shim0mura/items/191350e892ea9a310127)

```
sudo chown -R www-data:www-data /var/www/html/wptest_homepage
```

* 上記実施したところ、FTP画面が消え、無事にインストールが完了しました。

* 念の為、Wordpress管理画面→ツール→サイトヘルスをチェックすると「良好」と確認。めでたしめでたし。

## 参考記事
* [WordPressにアップロード可能なファイルサイズを大きくする
](https://tanojinfrom30.com/2021/03/21/upload-max-filesize/)
* [WordPressでアップロードサイズの上限を変更する方法まとめ](https://fox-wp.com/wordpress-upload-filesize/)
* [WordPressで画像アップロード時にUnable to create directoryのエラーになるときの対処法](https://qiita.com/mprumem/items/095a0375a4a5f35e40dc)
* [WordPressで編集できない場合はフォルダの所有者を変更しよう](https://haniwaman.com/edit-owner/)
* [ubuntuのapacheユーザーとグループ](https://qiita.com/shim0mura/items/191350e892ea9a310127)