#navi(../)
* PHPスクリプトとHTMLによるファイルのアップロード [#a9881096]
PHPによるファイルアップロードの環境構築とサンプルコードを以下に紹介します。~
尚、Apache+PHP環境はすでに構築済みであることが前提です。~
見構築の場合は以下の関連記事にあるLAMPやLAPP構築記事などを参考にしてください。

#contents
#htmlinsertpcsp(web-top.html,web-sp.html)


* 関連記事 [#uccf1400]
以下の資料は[[LINUX.JUST4FUN.BIZ>http://linux.just4fun.biz]]で公開している資料です。
-[[UbuntuでLAMP環境を構築する>http://linux.just4fun.biz/Ubuntu/LAMP%E7%92%B0%E5%A2%83%E3%81%AE%E6%A7%8B%E7%AF%89.html]]
-[[CentOSでLAMP環境を構築する>http://linux.just4fun.biz/CentOS/CentOS%E3%81%A7LAMP%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89.html]]
-[[UbuntuでLAPP環境を構築する>http://linux.just4fun.biz/Ubuntu/LAPP%E7%92%B0%E5%A2%83%E3%81%AE%E6%A7%8B%E7%AF%89.html]]
-[[CentOSでLAPP環境を構築する>http://linux.just4fun.biz/CentOS/CentOS%E3%81%A7LAPP%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89.html]]

* 動作確認環境 [#h48e9bc1]
 $ lsb_release -d
 Description:    Ubuntu 12.04.4 LTS

 $ apache2 -v
 Server version: Apache/2.2.22 (Ubuntu)
 Server built:   Jul 12 2013 13:38:21

 $ php --version
 PHP 5.3.10-1ubuntu3.10 with Suhosin-Patch (cli) (built: Feb 28 2014 23:19:50)
 Copyright (c) 1997-2012 The PHP Group
 Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

* アップロード先ディレクトリの環境設定 [#s1df7066]
Apacheのドキュメントルート(Ubuntuの場合/var/www)にfileディレクトリをパーミッション777で作成しました。~
このディレクトリにアップロードしたファイルを保存することにします。
 sakura@ubuntu:~$ cd /var/www/
 sakura@ubuntu:/var/www$ sudo mkdir file
 sakura@ubuntu:/var/www$ sudo chmod 777 file

* php.iniファイルの確認 [#m8312b58]
php.iniファイルには以下に記す部分の記載があります。~
 ;;;;;;;;;;;;;;;;
 ; File Uploads ;
 ;;;;;;;;;;;;;;;;
 
 ; Whether to allow HTTP file uploads.
 ; http://php.net/file-uploads
 file_uploads = On
 
 ; Temporary directory for HTTP uploaded files (will use system default if not
 ; specified).
 ; http://php.net/upload-tmp-dir
 ;upload_tmp_dir =
 
 ; Maximum allowed size for uploaded files.
 ; http://php.net/upload-max-filesize
 upload_max_filesize = 2M
 
 ; Maximum number of files that can be uploaded via a single request
 max_file_uploads = 20

file_uploads, upload_max_filesize, max_file_uploads などの設定値があります。~
キーワードを見ればわかると思いますが念のために記載します。
|file_uploads|Onになっていないとファイルアップロードができません|
|upload_max_filesize|アップロードできるファイルサイズの最大値を記します|

この設定値が間違っているとファイルアップロードに失敗する可能性があるので注意してください。~
尚、Ubuntuでは、/etc/php5/apache2/php.iniになります。~
各インストール環境によってphp.iniの場所が違いますので注意してください。

* アップロード用HTMLの準備 [#x68f0db2]
以下のHTMLをApacheのドキュメントルートに配置します。(Ubuntuの場合は/var/www)~
パーミッションによりコピーやファイル作成ができない場合は、sudoコマンドやrootユーザーにスイッチしてファイルを配置してください。~
&ref(upload.html); (改行コードLF)
 <html>
 <body>
 <form enctype="multipart/form-data" action="upload.php" method="POST">
     UPLOAD FILE : <input name="userfile" type="file" />
     <input type="submit" value="UPLOAD!" />
 </form>
 </body>
 </html>

* アップロード処理用のPHPを準備 [#yf473e80]
&ref(upload.php); (改行コードLF)
以下のphpスクリプトをApacheのドキュメントルートに配置します。(Ubuntuの場合は/var/www)~
パーミッションによりコピーやファイル作成ができない場合は、sudoコマンドやrootユーザーにスイッチしてファイルを配置してください。
 <?php
 $uploaddir = '/var/www/file/';
 $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
     echo "<b>Upload success.</b>";
 } else {
     echo "<b>Upload failed.</b>";
 }
 // DEBUG
 // print_r($_FILES);
 ?>

* ブラウザによりHTMLにアクセス [#tf6ad24a]
+以下のURLを指定しブラウザでアクセスしてください。
 http://配置したサーバー/upload.html
#ref(01.gif)
#br
+アップロードするファイルを選択してください。
+UPLOAD!ボタンを押します。~
注意:php.iniのupload_max_filesizeに指定したサイズを越したファイルはアップロードできませんので注意してください。
#ref(02.gif)
#br
''Upload success.''が表示されるはずです。
+ /var/www/fileを確認してみるとアップロードされているのが確認できます。
 $ ls -l /var/www/file/
 合計 4
 -rw-r--r-- 1 www-data www-data 14  3月 10 11:43 sample.txt


以上、PHPによるファイルのアップロード方法でした。

#htmlinsertpcsp(web-btm.html,web-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS