Drupalでファイルをアップロードするときに「最大許容サイズ2MBを超えるため...」エラー発生時の対処方法


# やりたいこと

![新しいテーマをインストール | Drupal 2017-11-03 12-07-36.png](https://qiita-image-store.s3.amazonaws.com/0/27090/8d8f2f7d-8b6e-59ff-5c5b-f5e047491765.png "新しいテーマをインストール | Drupal 2017-11-03 12-07-36.png")

Drupalで（テーマ）ファイルのアップロードをしたい。のですが、ファイルを指定してインストールを押すとエラーとなります。

![新しいテーマをインストール | Drupal 2017-11-03 10-45-04.png](https://qiita-image-store.s3.amazonaws.com/0/27090/e2cf0c2d-d988-79a7-2e77-f4f17c32a8bf.png "新しいテーマをインストール | Drupal 2017-11-03 10-45-04.png")


ファイルサイズが大きいと怒られました。
そんな事言われずにもっと大きいファイルのアップロードをしたいです。

# 環境
- Ubuntu 17.04
- Drupal 8.4.0


# 解決方法

- php.iniの設定を変更した
- .htaccessの設定を変更した
- ftpサーバをインストールした


# 手順

## php.iniの設定を変更

php.iniの場所を確認します。

```
msrx9@ubuntu:~$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc/php/7.0/cli
Loaded Configuration File => /etc/php/7.0/cli/php.ini
```

私の環境だと `/etc/php/7.0/cli/php.ini` のようです。
ではファイルのアップロード許容サイズを50Mまで増やします。
修正箇所は `upload_max_filesize` と `post_max_size` の二つです。

```diff:php.iniの編集内容
--- php.ini.org	2017-08-09 07:03:30.000000000 +0900
+++ php.ini	2017-11-03 10:29:22.939856273 +0900
@@ -653,7 +653,7 @@
 ; Its value may be 0 to disable the limit. It is ignored if POST data reading
 ; is disabled through enable_post_data_reading.
 ; http://php.net/post-max-size
-post_max_size = 8M
+post_max_size = 50M

 ; Automatically add files before PHP document.
 ; http://php.net/auto-prepend-file
@@ -806,7 +806,7 @@

 ; Maximum allowed size for uploaded files.
 ; http://php.net/upload-max-filesize
-upload_max_filesize = 2M
+upload_max_filesize = 50M

 ; Maximum number of files that can be uploaded via a single request
 max_file_uploads = 20
```

apache2を再起動します。
```
sudo /etc/init.d/apache2 restart
```

さぁ、リトライ。

あれー。 `php -i` でphpの設定を見るとちゃんとファイルサイズ制限が50Mになっているのに問題が解消しない。全く同じエラーメッセージが表示されます。

## .htaccessを変更する

こっちも修正が必要なのかな。。
設定を二行追加します。

```diff:.htaccess編集
msrx9@ubuntu:/var/www/html/d8$ diff .htaccess.org .htaccess
189a190,192
>
> php_value upload_max_filesize 50M
> php_value post_max_filesize 50M
```

設定反映のためapache2を再起動します。

```
sudo /etc/init.d/apache2 restart
```

あ、無事に「アップロードの最大許容サイズ2MBを越えるため... 」のエラーは解消できました。


![更新マネージャー | Drupal 2017-11-03 12-01-42.png](https://qiita-image-store.s3.amazonaws.com/0/27090/f8aa5965-e052-df29-a7ad-e23b85d851a5.png "更新マネージャー | Drupal 2017-11-03 12-01-42.png")

が、FTP関連でエラーが出ています。





## FTPサーバインストール

FTP接続を試してみます。

```
mba-no-MacBook-Air:~ mba$ ftp ubuntu.local
Trying 192.168.56.101...
ftp: Can't connect to `192.168.56.101': Connection refused
```


あぁ、そういえばFTPサーバを立ててないです。ので、vsftpdをインストールします。

```
sudo apt-get install vsftpd
```

インストールが終わったら`/etc/vsftpd.conf`を編集します。
`write_enables=YES` のコメントアウトを外しておかないと、FTPでログインできてもputの時にpermission deniedと怒れられます。


```
msrx9@ubuntu:/etc$ diff -u vsftpd.conf.org vsftpd.conf
--- vsftpd.conf.org	2017-11-03 11:19:32.544017000 +0900
+++ vsftpd.conf	2017-11-03 11:20:05.964017000 +0900
@@ -28,7 +28,7 @@
 local_enable=YES
 #
 # Uncomment this to enable any form of FTP write command.
-#write_enable=YES
+write_enable=YES
 #
 # Default umask for local users is 077. You may wish to change this to 022,
 # if your users expect that (022 is used by most other ftpd's)
```

設定反映のため、vsftpdを再起動させます。

```
sudo /etc/init.d/vsftpd restart
```

無事、これでファイルのアップロードができました。


# 参考
- [Drupalのファイルアップロードサイズ](http://kashioka.net/2013/08/28/drupal%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%82%B5%E3%82%A4%E3%82%BA/)
- [php.iniのパス指定と現在指定されているphp.iniの場所を知る方法](https://qiita.com/ug23/items/ab76a7104a0d073f1712)
- [[PHP] ファイルアップロードの上限サイズを変更する際にさわるディレクティブまとめ](http://bashalog.c-brains.jp/12/02/02-105952.php)
- [vsftpdの設定で謎のエラーにハマった](http://tomoprog.hatenablog.com/entry/2016/03/02/010729)