回答編集履歴

3

追記

2015/11/05 20:36

投稿

退会済みユーザー
test CHANGED
@@ -10,6 +10,24 @@
10
10
 
11
11
 
12
12
 
13
+ でも、バグじゃないんです。
14
+
15
+
16
+
17
+ [basename](http://php.net/manual/ja/function.basename.php)
18
+
19
+
20
+
21
+ > basename() はロケールに依存します。 マルチバイト文字を含むパスで正しい結果を得るには、それと一致するロケールを [setlocale()](http://php.net/manual/ja/function.setlocale.php) で設定しておかなければなりません。
22
+
23
+
24
+
25
+ [basename() はマルチバイトに対応できない?](http://php-archive.net/php/mb_basename/)
26
+
27
+
28
+
29
+
30
+
13
31
  ```php
14
32
 
15
33
  root\server\php\UploadHandler.php
@@ -18,13 +36,13 @@
18
36
 
19
37
  protected function trim_file_name($file_path, $name, $size, $type, $error, $index, $content_range) {
20
38
 
21
- // Remove path information and dots around the filename, to prevent uploading
39
+
22
40
 
23
- // into different directories or replacing hidden system files.
41
+ setlocale(LC_ALL, 'ja_JP');
24
42
 
25
- // Also remove control characters and spaces (\x00..\x20) around the filename:
43
+
26
44
 
27
- $name = trim(basename(stripslashes($name)), ".\x00..\x20"); // <- ここから basename をとる
45
+ $name = trim(basename(stripslashes($name)), ".\x00..\x20");
28
46
 
29
47
  // Use a timestamp for empty filenames:
30
48
 
@@ -42,4 +60,4 @@
42
60
 
43
61
 
44
62
 
45
- ※同じ理由で、pathinfo もコケるんで注意が必要です。たいていのサイトにはPHP6では解消すると書いてますが、PHP7からですね。(PHP6は開発中止になっちゃったんで。)
63
+ ※同じ理由で、pathinfo もコケるんで注意が必要です。

2

追記

2015/11/05 20:36

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,9 @@
1
+ > アップロード自体はされるので恐らくプログラムミスだとは思うのです
2
+
3
+ そうですよね。普通は、自分に原因があるのですが…w
4
+
5
+
6
+
1
7
  これっすね。
2
8
 
3
9
  [ファイル名などに日本語が含まれるパスでbasename関数が失敗するバグ](http://php1st.com/1434/)
@@ -36,4 +42,4 @@
36
42
 
37
43
 
38
44
 
39
- ※同じ理由で、pathinfo もコケるんで注意が必要です。
45
+ ※同じ理由で、pathinfo もコケるんで注意が必要です。たいていのサイトにはPHP6では解消すると書いてますが、PHP7からですね。(PHP6は開発中止になっちゃったんで。)

1

追記

2015/11/05 20:19

投稿

退会済みユーザー
test CHANGED
@@ -33,3 +33,7 @@
33
33
  }
34
34
 
35
35
  ```
36
+
37
+
38
+
39
+ ※同じ理由で、pathinfo もコケるんで注意が必要です。