asp에서도 동일한 문제로 고생했다.

webknight 4.4 설치이후 발생한 문제인데...
그걸 이제야 해결을 하네... ^^ ㅎㅎ

* 기본 셋팅 

* 해결된 변경 셋팅

현상 : 파일첨부 시 100% 후 증발현상 및 업로드 속도가 현저하게 느림

에러 : 에러 메시지 발생 없음

조치 : [Post] Denied Post Sequences - Monitor
조치 : [Post] Denied Post Regular Expressions - Disabled

Posted by Midas Min™
,

이번에 테스트를 하며 200메가짜리 파일을 올리니 오류가 발생하였다.
결국은 사이즈 문제...

C:\WINDOWS\PHP.INI 파일을 열어서 수정한다.


1) 최대 업로드 용량 ( 아 기본 2M 너무 작네요.... 전 500M로 수정했어요 )
* upload_max_filesize = 2M


2) POST 방식으로 최대 보낼 수 있는 용량 ( 아.. 기본 8M ... 난 510M로 수정했어요 )

* post_max_size = 8M

 

3) PHP 스크립트 최대 실행시간 입니다. 
    단위는 당연히 초단위구요. ( 저는 넉넉히 3000 )

* max_execution_time = 30

4) PHP get, post 파일업로드 등의 입력 데이트를 최대한 받아들이는 시간입니다. 
    저는 넉넉히 3000
* max_input_time = 60

5) php의 메모리 사용량입니다. 업로드시 메모리에 담았다 파일로 생성하므로 넉넉히 처리해야 됩니다.
* memory_limit = 128M

이렇게 셋팅하시면 되며 결과적으로 post_max_szie >= upload_max_filesize >= memory_limit 로 설정되어야 파일 업로드 실패가 안 생깁니다.

수정 후 iis를 꼭 재시작하여 주시기 바랍니다.

Posted by Midas Min™
,

테스트 서버 구성 후 PHP를 스터디 중인데...
100MB 이상의 파일 업로드시 메세지가 뜨면 오류가 발생하였다 

알고보니 IIS에 셋팅을 해 놓았는데 거기서 최대 컨텐츠 길이가 제한되어 있기 때문에 오류가 발생하였다.


IIS -> 설정 홈 -> 요청 필터링 -> 기능 설정 편집 -> 허용되는 최대 콘텐츠 길이를 최대값인 4294967295 로 늘려준다.

 

다시 서버를 리스타트 후 테스트 하니 정상적으로 업로드가 된다. ^^;;;

Posted by Midas Min™
,

 

//SESSION 을 사용하는 페이지 상단에는 꼭 선언(사용하겠다는 의미)
//asp는 선언이 따로 필요 없었는데 php는 선언해야 되네

session_start();

 

//SESSION 에 값 입력

$_SESSION['name'] = '홍길동';

 

//SESSION  값 사용

$aaa = $_SESSION['name'];

 

//SESSION 비우기

session_uset();

 

//SESSION  배열의 모든 값 비우기

session_destroy();

 

Posted by Midas Min™
,

작업을 하며 잘 사용할 거 같아서 정리해둠

 

$_SERVER['DOCUMENT_ROOT'] = 현재 사이트가 위치한 서버상의 위치 = webappinclude

$_SERVER['HTTP_ACCEPT_ENCODING'] = 인코딩 방식 = gzip, deflate

$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 언어 = ko

$_SERVER['HTTP_USER_AGENT'] = 사이트 접속한 사용자 환경 = Mozilla4.0(compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705

$_SERVER['REMOTE_ADDR'] = 사이트 접속한 사용자 IP = xxx.xxx.xxx.xxx

$_SERVER['SCRIPT_FILENAME'] = 실행되고 있는 위치와 파일명 = webappincludeindex.php

$_SERVER['SERVER_NAME'] = 사이트 도메인 = WWW.X2CHI.COM

$_SERVER['SERVER_PORT'] = 사이트가 사용하는 포트 = 80

$_SERVER['SERVER_SOFTWARE'] = 서버의 소프트웨어 환경 = Apache1.3.23 (Unix) PHP4.1.2 mod_fastcgi2.2.10 mod_throttle3.1.2 mod_ssl2.8.6 OpenSSL0.9.6c

$_SERVER['GATEWAY_INTERFACE'] = cGI 정보 = CGI1.1

$_SERVER['SERVER_PROTOCOL'] = 사용된 서버 프로토콜 = HTTP1.1

$_SERVER['REQUEST_URI'] = 현재페이지의 주소에서 도메인 제외 =  index.phpuser=&name=

$_SERVER['PHP_SELF'] = 현재페이지의 주소에서 도메인과 넘겨지는 값 제외 = index.php

$_SERVER['APPL_PHYSICAL_PATH'] = 현재페이지의 실제 파일 주소 = Dwebapp


출처: https://unabated.tistory.com/entry/PHP-SERVER-함수 [랄라라]

Posted by Midas Min™
,

PHP 초보인 내가 SQLSRV 방식으로 쿼리를 날리니... 한글이 깨지는 기적을 맛보게 되었다...
-_-;; 왠 PDO_SQLSRV는 괜찮은데 이방식은 이렇지....
내가 멀 잘못했나... 고민하다가.. 옵션을 검색해 보니...

$serverName = 'server';
$connectionInfo = array('Database'=>'dbName', 'UID'=>'user', 'PWD'=>'password', 'CharacterSet'=>'UTF-8');
$conn = sqlsrv_connect($serverName, $connectionInfo);

 

ㅎㅎㅎ 위에 기적과 같은 옵션이 있었다.
PHP 파일이 UTF-8 방식이기에 알아서 당연하게 맞춰서 연결되겠지 했는데...
문제는 결국 CharacterSet 이었다.
^^;;; 이제 차근차근 개발을 해 봐야지.. ㅎㅎ

Posted by Midas Min™
,

원래 IIS 기반 ASP, ASP.NET으로만 개발하다 이번에 PHP를 제대로 스터디하며 하나씩 배우고 있다.
원래 PHP에 MYSQL을 주로 사용을 하지만 나는 이제까지 MSSQL만 사용했고 회사 프로젝트에 MSSQL을 사용해야 돼서
SQL 서버 드라이버를 설치하게 되었다.
그런데 의문은??? 같은 DLL인데 TS, NTS 2가지의 버전이 있었다. ㅡoㅡ 오호 이건 도대체 멀징?

그래서 의문점을 가지고 알아보았다.

예전 자료를 찾아보니 PHP는 TS 버전만 빌드되었다고 한다.
아무래도 리눅스 기반으로 개발되었으니 기존 리눅스/유닉스 계열이 지원하는 Multi-process 방식이었기 때문이다.
php가 대중화되면서 iis와 연동하게 되었고 Multi-thread 방식인 윈도우 계정에 이 TS버전을 빌드하게 되면서 문제가 발생하였다.
PHP를 IIS와 연동하기 위해 CGI(FastCGI) 또는 ISAPI(Internet Server API) 방식으로 연동을 해야 하는데 기존에 PHP와 관련된 모듈은 TS로 다 개발되었기 때문에 ISAPI로 연동하였을 경우 서버가 다운되는 대참사가 발생하였다.

이를 방지하기 위해 CGI 방식으로 변경하여 사용했으나 퍼포먼스 쪽에 문제가 생겼고 이를 개선하기 위해 나온
버전이 NTS(Non-Thread Safe) 버전이다.

처음에 아무 생각 없이 Dynamic Extensions에 추가를 했는데 동작을 안 해서 이것저것 자료를 찾다 보니 알게 되었다.

이번에 Microsoft Drivers 5.9 for PHP for SQL Server를 사용해 작업하고 있는데....

php_pdo_sqlsrv_80_nts_x64.dll

php_sqlsrv_80_nts_x64.dll

두 가지를 Dynamic Extensions 추가해 사용하면 정상적으로 사용이 된다.
참.. 새로운 걸 사용한다는 게 쉬운 게 아니네.. ㅎㅎㅎ

참고로 더 확인해보니.. 윈도우인 경우에도 종류에 따라 사용 버전이 틀려진다.

 

Windows + IIS(FastCGI) : NTS 버전
Windows + Apache : TS 버전

이렇게 사용하면 된다. ^^;;; 윈도우 기반이더라도 Apache를 통해 서비스한다면 TS 버전 사용이 가능하다.

 

 

Posted by Midas Min™
,

역쒸나... 데이터베이스 연동방법이 가장 문제이다.
일단 기존 시스템이 모두 sql server 기반이기에 php도 mssql을 이용해야 된다.

1) 일단 마이크로소프트에서 제공하는 드라이버를 다운로드 받는다.
   https://docs.microsoft.com/ko-kr/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15

 

Microsoft Drivers for PHP for SQL Server 다운로드 - PHP drivers for SQL Server

Microsoft Drivers for PHP for SQL Server를 다운로드하여 SQL Server 및 Azure SQL Database에 연결하는 PHP 애플리케이션을 개발합니다.

docs.microsoft.com


귀찮으면 아래 첨부한 파일을 다운받아도 됩니다.

SQLSRV59.EXE
0.96MB

 

2) 다운 받아 압축을 풀면 dll 파일들이 보여집니다.
    아래 선택된 파일을 복사해서 c:\php\ext 폴더에 넣습니다.

 

3) php.ini 파일을 아래 그림과 같이 편집합니다.

 Paths and Directories 부분은 아래 그림과 같이

 Dynamic Extensions 부분은 아래 그림과 같이


4) 수정을 다 했으면 iis를 재가동 하여줍니다.
   phpinfo 페이지를 로딩하면 아래 그림과 같이 표시가 됩니다. ( 정상 적으로 처리 되었다면 )

 

 

5) 일단 나는 PDO_SQLSRV 방식으로 처리를 했었는데.... 잘 처리 되었다.
    MS 샘플 소스에 잘되어 있으니 링크를 남깁니다. ^^ 다들 데이터 처리 성공하시길!!

  https://docs.microsoft.com/ko-kr/sql/connect/php/example-application-pdo-sqlsrv-driver?view=sql-server-ver15

 

예제 애플리케이션(PDO_SQLSRV 드라이버) - PHP drivers for SQL Server

AdventureWorks 제품 검토 예제는 Microsoft Drivers for PHP for SQL Server의 PDO_SQLSRV 드라이버를 사용하는 웹 애플리케이션입니다.

docs.microsoft.com

 

* 트랜잭션 처리 및 관련 PDO 클래스는 아래 링크를 참조하면 된다.
  https://docs.microsoft.com/ko-kr/sql/connect/php/pdo-class?view=sql-server-ver15

 

 

* 마이크로 소프트 샘플 예정 ( 전 이걸 수정해서 테스트 했습니다. )

<!--=============  
This file is part of a Microsoft SQL Server Shared Source Application.  
Copyright (C) Microsoft Corporation.  All rights reserved.  
  
THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY  
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE  
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A  
PARTICULAR PURPOSE.  
============= *-->  
  
<!--Note: The presentation formatting of this example application -->  
<!-- is intentionally simple to emphasize the SQL Server -->  
<!-- data access code.-->  
<html>  
<head>  
<title>AdventureWorks Product Reviews</title>  
</head>  
<body>  
<h1 align='center'>AdventureWorks Product Reviews</h1>  
<h5 align='center'>This application is a demonstration of the   
                   object oriented API (PDO_SQLSRV driver) for the   
                   Microsoft Drivers for PHP for SQL Server.</h5><br/>  
<?php  
$serverName = "(local)\sqlexpress";  
  
/* Connect using Windows Authentication. */  
try  
{  
$conn = new PDO( "sqlsrv:server=$serverName ; Database=AdventureWorks", "", "");  
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  
}  
catch(Exception $e)  
{   
die( print_r( $e->getMessage() ) );   
}  
  
if(isset($_REQUEST['action']))  
{  
switch( $_REQUEST['action'] )  
{  
/* Get AdventureWorks products by querying against the product name.*/  
case 'getproducts':  
try  
{  
$params = array($_POST['query']);  
$tsql = "SELECT ProductID, Name, Color, Size, ListPrice   
 FROM Production.Product   
 WHERE Name LIKE '%' + ? + '%' AND ListPrice > 0.0";  
  
$getProducts = $conn->prepare($tsql);  
$getProducts->execute($params);  
$products = $getProducts->fetchAll(PDO::FETCH_ASSOC);  
$productCount = count($products);  
if($productCount > 0)  
{  
BeginProductsTable($productCount);  
foreach( $products as $row )  
{  
PopulateProductsTable( $row );  
}  
EndProductsTable();  
}  
else  
{  
DisplayNoProdutsMsg();  
}  
}  
catch(Exception $e)  
{   
die( print_r( $e->getMessage() ) );   
}  
GetSearchTerms( !null );  
break;  
  
/* Get reviews for a specified productID. */  
case 'getreview':  
GetPicture( $_GET['productid'] );  
GetReviews( $conn, $_GET['productid'] );  
break;  
  
/* Write a review for a specified productID. */  
case 'writereview':  
DisplayWriteReviewForm( $_POST['productid'] );  
break;  
  
/* Submit a review to the database. */  
case 'submitreview':  
try  
{  
$tsql = "INSERT INTO Production.ProductReview (ProductID,   
   ReviewerName,   
   ReviewDate,   
   EmailAddress,   
   Rating,   
   Comments)   
        VALUES (?,?,?,?,?,?)";  
$params = array(&$_POST['productid'],   
&$_POST['name'],   
date("Y-m-d"),   
&$_POST['email'],   
&$_POST['rating'],   
&$_POST['comments']);  
$insertReview = $conn->prepare($tsql);  
$insertReview->execute($params);  
}  
catch(Exception $e)  
{   
die( print_r( $e->getMessage() ) );   
}  
GetSearchTerms( true );  
GetReviews( $conn, $_POST['productid'] );  
break;  
  
/* Display form for uploading a picture.*/  
case 'displayuploadpictureform':  
try  
{  
$tsql = "SELECT Name FROM Production.Product WHERE ProductID = ?";  
$getName = $conn->prepare($tsql);  
$getName->execute(array($_GET['productid']));  
$name = $getName->fetchColumn(0);  
}  
catch(Exception $e)  
{   
die( print_r( $e->getMessage() ) );   
}  
DisplayUploadPictureForm( $_GET['productid'], $name );  
break;  
  
/* Upload a new picture for the selected product. */  
case 'uploadpicture':           
try  
{  
$tsql = "INSERT INTO Production.ProductPhoto (LargePhoto)   
 VALUES (?)";  
$uploadPic = $conn->prepare($tsql);  
$fileStream = fopen($_FILES['file']['tmp_name'], "r");  
$uploadPic->bindParam(1,    
  $fileStream,   
  PDO::PARAM_LOB,   
  0,   
  PDO::SQLSRV_ENCODING_BINARY);  
$uploadPic->execute();  
  
/* Get the first field - the identity from INSERT -   
   so we can associate it with the product ID. */  
$photoID = $conn->lastInsertId();  
$tsql = "UPDATE Production.ProductProductPhoto   
 SET ProductPhotoID = ?   
 WHERE ProductID = ?";  
$associateIds = $conn->prepare($tsql);  
$associateIds->execute(array($photoID, $_POST['productid']));  
}  
catch(Exception $e)  
{  
die(print_r($e->getMessage()));  
}  
  
GetPicture( $_POST['productid']);  
DisplayWriteReviewButton( $_POST['productid'] );  
GetSearchTerms (!null);  
break;  
}//End Switch  
}  
else  
{  
    GetSearchTerms( !null );  
}  
  
function GetPicture( $productID )  
{  
    echo "<table align='center'><tr align='center'><td>";  
    echo "<img src='photo_pdo.php?productId=".$productID."'   
      height='150' width='150'/></td></tr>";  
    echo "<tr align='center'><td><a href='?action=displayuploadpictureform&productid=".$productID."'>Upload new picture.</a></td></tr>";  
    echo "</td></tr></table></br>";  
}  
  
function GetReviews( $conn, $productID )  
{  
try  
{  
$tsql = "SELECT ReviewerName,   
CONVERT(varchar(32),   
ReviewDate, 107) AS [ReviewDate],   
Rating,   
Comments   
 FROM Production.ProductReview   
 WHERE ProductID = ?   
 ORDER BY ReviewDate DESC";  
$getReviews = $conn->prepare( $tsql);  
$getReviews->execute(array($productID));  
$reviews = $getReviews->fetchAll(PDO::FETCH_NUM);  
$reviewCount = count($reviews);  
if($reviewCount > 0 )  
{  
foreach($reviews as $row)  
{  
$name = $row[0];  
$date = $row[1];  
$rating = $row[2];  
$comments = $row[3];  
DisplayReview( $productID, $name, $date, $rating, $comments );  
}  
}  
else  
{  
DisplayNoReviewsMsg();   
}  
}  
catch(Exception $e)  
{  
die(print_r($e->getMessage()));  
}  
    DisplayWriteReviewButton( $productID );  
GetSearchTerms(!null);  
}  
  
/*** Presentation and Utility Functions ***/  
  
function BeginProductsTable($rowCount)  
{  
    /* Display the beginning of the search results table. */  
$headings = array("Product ID", "Product Name", "Color", "Size", "Price");  
echo "<table align='center' cellpadding='5'>";   
echo "<tr bgcolor='silver'>$rowCount Results</tr><tr>";  
foreach ( $headings as $heading )  
{  
echo "<td>$heading</td>";  
}  
echo "</tr>";  
}  
  
function DisplayNoProdutsMsg()  
{  
    echo "<h4 align='center'>No products found.</h4>";  
}  
  
function DisplayNoReviewsMsg()  
{  
    echo "<h4 align='center'>There are no reviews for this product.</h4>";  
}  
  
function DisplayReview( $productID, $name, $date, $rating, $comments)  
{  
    /* Display a product review. */  
    echo "<table style='WORD-BREAK:BREAK-ALL' width='50%' align='center' border='1' cellpadding='5'>";   
    echo "<tr>  
            <td>ProductID</td>  
            <td>Reviewer</td>  
            <td>Date</td>  
            <td>Rating</td>  
          </tr>";  
      echo "<tr>  
              <td>$productID</td>  
              <td>$name</td>  
              <td>$date</td>  
              <td>$rating</td>  
            </tr>  
            <tr>  
              <td width='50%' colspan='4'>$comments</td></tr></table><br/><br/>";  
}  
  
function DisplayUploadPictureForm( $productID, $name )  
{  
    echo "<h3 align='center'>Upload Picture</h3>";  
    echo "<h4 align='center'>$name</h4>";  
    echo "<form align='center' action='adventureworks_demo_pdo.php'   
enctype='multipart/form-data' method='POST'>  
<input type='hidden' name='action' value='uploadpicture'/>  
<input type='hidden' name='productid' value='$productID'/>  
<table align='center'>  
 <tr>  
   <td align='center'>  
 <input id='fileName' type='file' name='file'/>  
   </td>  
 </tr>  
 <tr>  
   <td align='center'>  
<input type='submit' name='submit' value='Upload Picture'/>  
   </td>  
 </tr>  
</table>  
  </form>";  
}  
  
function DisplayWriteReviewButton( $productID )  
{  
    echo "<table align='center'><form action='adventureworks_demo_pdo.php'   
             enctype='multipart/form-data' method='POST'>  
          <input type='hidden' name='action' value='writereview'/>  
          <input type='hidden' name='productid' value='$productID'/>  
          <input type='submit' name='submit' value='Write a Review'/>  
          </p></td></tr></form></table>";  
}  
  
function DisplayWriteReviewForm( $productID )  
{  
    /* Display the form for entering a product review. */  
    echo "<h5 align='center'>Name, E-mail, and Rating are required fields.</h5>";  
    echo "<table align='center'>  
<form action='adventureworks_demo_pdo.php'   
  enctype='multipart/form-data' method='POST'>  
<input type='hidden' name='action' value='submitreview'/>  
<input type='hidden' name='productid' value='$productID'/>  
<tr>  
<td colspan='5'>Name: <input type='text' name='name' size='50'/></td>  
</tr>  
<tr>  
<td colspan='5'>E-mail: <input type='text' name='email' size='50'/></td>  
</tr>  
<tr>  
<td>Rating: 1<input type='radio' name='rating' value='1'/></td>  
<td>2<input type='radio' name='rating' value='2'/></td>  
<td>3<input type='radio' name='rating' value='3'/></td>  
<td>4<input type='radio' name='rating' value='4'/></td>  
<td>5<input type='radio' name='rating' value='5'/></td>  
</tr>  
<tr>  
<td colspan='5'>  
<textarea rows='20' cols ='50' name='comments'>[Write comments here.]</textarea>  
</td>  
</tr>  
<tr>  
<td colspan='5'>  
<p align='center'><input type='submit' name='submit' value='Submit Review'/>  
</td>  
</tr>  
</form>  
          </table>";  
}  
  
function EndProductsTable()  
{   
    echo "</table><br/>";   
}  
  
function GetSearchTerms( $success )  
{  
    /* Get and submit terms for searching the database. */  
    if (is_null( $success ))  
    {  
echo "<h4 align='center'>Review successfully submitted.</h4>";}  
echo "<h4 align='center'>Enter search terms to find products.</h4>";  
echo "<table align='center'>  
<form action='adventureworks_demo_pdo.php'   
  enctype='multipart/form-data' method='POST'>  
<input type='hidden' name='action' value='getproducts'/>  
<tr>  
   <td><input type='text' name='query' size='40'/></td>  
</tr>  
<tr align='center'>  
   <td><input type='submit' name='submit' value='Search'/></td>  
</tr>  
</form>  
  </table>";  
}  
  
function PopulateProductsTable( $values )  
{  
    /* Populate Products table with search results. */  
    $productID = $values['ProductID'];  
    echo "<tr>";  
    foreach ( $values as $key => $value )  
    {  
        if ( 0 == strcasecmp( "Name", $key ) )  
        {  
            echo "<td><a href='?action=getreview&productid=$productID'>$value</a></td>";  
        }  
        elseif( !is_null( $value ) )  
        {  
            if ( 0 == strcasecmp( "ListPrice", $key ) )  
            {  
                /* Format with two digits of precision. */  
                $formattedPrice = sprintf("%.2f", $value);  
                echo "<td>$$formattedPrice</td>";  
            }  
            else  
            {  
                echo "<td>$value</td>";  
            }  
        }  
        else  
        {  
            echo "<td>N/A</td>";  
        }  
    }  
    echo "<td>  
            <form action='adventureworks_demo_pdo.php' enctype='multipart/form-data' method='POST'>  
            <input type='hidden' name='action' value='writereview'/>  
            <input type='hidden' name='productid' value='$productID'/>  
            <input type='submit' name='submit' value='Write a Review'/>  
            </td></tr>  
            </form></td></tr>";  
}  
?>  
</body>  
</html>

 

 

Posted by Midas Min™
,

원래 C/S 개발이 전문이지만....
이것저것 하다 보니... PHP를 스터디 진행하게 됐다.
물론 기존에 ASP, ASP.NET으로 개발을 했지만.. 향후를 위해 PHP 스터디를 진행하기로 했다.
기존에 ASP 사이트와 같이 운영을 해야 되다 보니 IIS 환경에 PHP를 같이 돌려야 되는 상황이다.

IIS에 PHP를 구동하면 php.ini 파일은 c:\windows 폴더 안에 넣은 후 iis를 재실행하면 반영이 되도록 되어있다.

그래서 c:\php 폴더안에 php.ini-production 파일을 php.ini로 변경하여 c:\windows 폴더에 넣었다.
그런 후 iis를 재실행하고 phpinfo(); 함수가 있는 페이지를 로딩하자 빈 화면만 나타났다 -_-;; 
소스 보기를 하니 그림과 같이 소스가 그대로 보이는 현상이.. -_-;;;;


그래서 찾아보니 몇 가지 속성을 변경해 주어야 된다.
일단 타임존을 설정해 두어야 된다. ( 기본은 그냥 주석처리가 되어있다. )
"Asia/Seoul"로 설정하였다.

그리고 short_open_tag = On 으로 값을 변경해준다. ( Off로 기본 셋팅이 되어있다. )

이렇게 수정 후 IIS를 재 실행 후 PHPINFO 페이지를 호출하면 잘 나온다 ^^

또 순간적으로 욱!! 해서... PHP고 머고 접을 뻔했네 ㅋㅋㅋ

결론은 저 옵션이 짧은 태그에 대한 허용을 해주는 옵션인데.. 소스 길이가 너무 짧아서 차단되는 기형상을 본 것이다.
-_-;;; 앞날이 까마득하네....
그래도 조만간 PHP도 고수가 되겠지... HTML5, AJAX, JQUERY는 동일하니.. ^^a

나중에 안 사실이지만... php 구분을 선언한때 <? ?> 이렇게 선언하는데...
<?php ?> 이렇게 했으면 문제가 없던거였네.. ㅠ_ㅠ 결국 내 손이 문제였네 ㅋ

Posted by Midas Min™
,

1. php 사이트에서 php 파일을 다운로드합니다.

2. 다운로드한 파일을 압축을 풀고 c:\php 폴더를 만들어 복사해 넣습니다.

3. 해당 폴더를 환경변수에 추가를 해줍니다.

4. index.php 파일 생성합니다.

5. IIS 처리기 맵핑에 추가합니다.
  이제 IIS 사이트에서 PHP 파일을 호출해도 처리할 수 있도록 처리기 매핑이 필요합니다.
  아래 그림과 같이 사이트를 선택 후 "처리기 매핑"을 선택합니다.
 

 

   "모듈 매핑 추가"를 선택합니다.

  잠시 후 "모듈 매핑 추가" 팝업창이 뜨면 아래 그림과 같이 등록합니다.


6. 해당 사이트로 접속하면 php 페이지가 정상적으로 처리가 됩니다.

 

이렇게 간단하게 php를 윈도우 서버 iis와 연동하여 서비스하는 방법을 구성해 보았습니다.

Posted by Midas Min™
,