2016년 1월 7일 목요일

php 실행 방법

php 서버쪽에서 실행되는 스크립트다. 따라서 서버가 실행될 있는 환경이 만들어져 있어야 한다. 이를 위해 Bitnami라는 툴을 설치하여 환경을 구성해 준다
Bitnami 툴은 Apache, Mysql, Php 등의 서버에서 필요한 요소를 가지고 있어 이들의 약자로 AMP 부른다.
Windows 설치 파일은 WAMP, MAC용은 MAMP 파일을 다운받아 설치한다.  설치 방법은 여기 참고한다


설치 후에는 localhost 기본 폴더의 위치가 어디인지 확인해야 한다. 위치에 기본 페이지인 index.html가 있다.

Windows에서는 
~설치위치/mampstack-5.6.26-1/apache2/htdocs
이고, mac에서는 
/Applications/mampstack-5.6.26-1/apache2/htdocs
이다


서버 실행은 Mac에서는
cmd+space bar를 눌러 manager-osx을 찾아 런한다.  툴의 Manager-server 탭을 선택하고 MySQL db와 Apache web server를 시작한다.



테스트를 위해 localhost php_test 폴더를 만들고 아래의 demo3.html 파일과  개의 관련 파일을 만들었다. mac에서 접속 시에는 브라우저의 주소창에 
localhost:8080/php_test/demo3.html
접속하면 된다.  

파일이 3개가 필요한데 아래와 같다. 특히 php파일은 demo3.html 같은 폴더 위치에 있어야 한다. php파일의 실행은 주소창에 
localhost:8080/php_test/receivetxt.php
이지만 단독으로 실행하려면 코드 내에서 echo “hello php”로 값을 출력해 보면 된다.  


receivetxt.php (업로드 파일을 받아 처리할 서버쪽 스크립트 파일)
—————————
<?php
echo file_get_contents($_FILES["image"]["name"]);
$output = 'outputtxt.txt';
file_put_contents($\$$output, file_get_contents($\$$_FILES["image"]["name"]));
?>
내용을 화면에 출력하고 파일을 저장한다. txt파일은 저장되었지만 이미지파일은 안됨.   


sendtxt.txt (전송될 파일)
—————————
vwxyz


demo3.html (클라이언트 파일)
—————————
<html>
    <head></head>
    <body>
        <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

        <input type="file" id="image_to_upload"/>
        <p>filename : <span id="filename"></span></p>
        <p>contents : <span id="contents"></span></p>
        
        <script>
            formdata = new FormData();      
            $("#image_to_upload").on("change", function() {
                var file = this.files[0];

                $('#filename').text(file.name); // 업로드한 파일 이름 화면 표시

                if (formdata) {
                    formdata.append("image", file);
                    $.ajax({
                        url: "./receivetxt.php",  // 같은 폴더 위치. php 파일을 받음.
                        type: "POST", 
                        data: formdata,
                        processData: false,
                        contentType: false,
                        success: function(data) { 
                        // callback함수이고 서버 php 실행 에코를 data 인자로 넘겨줌
                                $('#filename').text(data); // 에코 data 화면 표시
                        }
                    });
                }                       
            }); 
        </script>

    </body>
</html>


수행 작업은 client에서 파일 sendtxt.txt 업로드해서 server 보낸다. 서버의 receivetxt.php 파일을 받아 내용을 화면에 echo한다. 만일 통신이 성공하면 echo 다시 client 전송되어 html 내에 표시된다비동기 통신에 관련된 내용은 여기에서 참고한다





References

댓글 2개: