2012-09-11 2 views
0

IIS, 버전 7.5에 Codeigniter 응용 프로그램을 배포하는 것과 관련하여 도움을 요청하고 싶습니다. Codeigniter 및 IIS와 관련된 다른 게시물을 읽으려고했지만 그 중 아무 것도 작동하지 않습니다. 아파치에서 잘 작동하는 CodeIgniter 1.7을 사용하여 응용 프로그램을 개발했지만 Windows 7 Ultimate에서 IIS 7.5에서 작동하도록 만들 수는 없습니다. 모든IIS 7.5의 Codeigniter 1.7

IIS data of phpconfig

먼저, PHP는 이미 서버에서 작동하고, 내가 그것을 작동하게하는 알에게 단계를 따라, 또한 나는 PHP 응용 프로그램이 작동하고 같은 파일을 사용하기 위해 그 필요한 가정 것을 IIS_UrlRewriteModule 설치 htaccess. (서버에 phpinfo의 JPG가 첨부 됨). 이것은 로컬 서버 IIS 7.5입니다.

후 확인 PHP가 작동, 내가 C의 내부 웹 응용 프로그램의 폴더를 넣어 있는지 확인하십시오 : \을 Inetpub \ wwwroot에 \, 이것은 내가 아파치에서 사용하고 htaccess로이다 :

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /application/index.php?/$1 [L] 

RewriteCond %{REQUEST_URI} ^application.* 
RewriteRule ^(.*)$ /application/index.php?/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ application/index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    # If we don't have mod_rewrite installed, all 404's 
    # can be sent to index.php, and everything works as normal. 
    # Submitted by: ElliotHaughin 

    ErrorDocument 404 index.php 
</IfModule> 

"내가에 갈 때,

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="MyRule"> <match url="^(.*)$" /> 
        <conditions> 
         <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
        </conditions> 
        <action type="Rewrite" url="index.php/{R:1}" appendQueryString="false" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

그러나 : 그리고 난 IIS와 함께 당신의 Web.config 파일을 사용한다는 것을 읽고, 그래서 난 유래의 다른 게시물의 예를 기반으로 파일을 생성하고 다음 코드가 http : // localhost/application "나는 이것을 얻는다 :

012 내가 넣어 경우 3,516,

File directory of website

는 그리고 "HTTP를 ://localhost/application/index.php"나는 단지 응용 프로그램 루트 디렉토리 나 내가있는 경우의 Web.config이있는 경우 오류 (500) 내가 같은 상황을 얻을 수 루트 디렉토리의 .htaccess. 나는해야할 일을 모른다. 나를 도와주세요.

답변

0

글쎄, 마침내 약간의 테스트를 마친 후에, 고맙습니다. 우선 확장 기능의 디렉토리가 잘못되어 php.ini에 문제가있어서 mysql과 mssql 확장자를 찾으려고 할 때 PHP 로그에 오류가 발생했습니다. 그런 다음 IIS 관리자에서 처리기 매핑을 수정 한 후 요청 제한의 섹션에서 PHP에 대해 만든 모듈 매핑을 편집했습니다. "요청이 파일에 매핑 된 경우에만 처리기 호출"을 확인한 후 web.config를 수정했습니다. like :

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="MyRule"> <match url="^(.*)$" /> 
        <conditions> 
         <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
        </conditions> 
        <action type="Rewrite" url="/application/index.php?/{R:1}" appendQueryString="false" /> 
       </rule> 
      </rules> 
     </rewrite> 
     <defaultDocument> 
      <files> 
       <add value="index.php" /> 
      </files> 
     </defaultDocument> 
     <security> 
     <requestFiltering> 
      <hiddenSegments applyToWebDAV="false"> 
       <add segment="application" /> 
       <add segment="system" /> 
      </hiddenSegments> 
     </requestFiltering> 
     </security> 
    </system.webServer> 
</configuration> 

이제 작동합니다. D.

+0

web.config 파일은 어디에 있는가 ?? –

1

처음으로 web.config가 필요하지 않습니다! 그런 다음 일반 PHP 코드 (codeigniter없이)가 IIS에서 잘 작동하는지 확인하십시오. 그렇다면 2 줄의 코드를 추가하여 코드 이그니 터의 PHP 파일 중 하나를 수정해야합니다. Apache에서 코드 점자을 사용하는 웹 응용 프로그램 디렉토리를 복사하십시오.

  1. 이동 바로 웹 응용 프로그램 디렉토리 아래 디렉토리 시스템 합니다. 따라서 웹 응용 프로그램 디렉토리를 열 때 즉시 시스템 디렉토리를보아야합니다.
  2. 그런 다음 핵심 디렉토리로 이동하고, 편집기에서 열린 URI.php 및 기능이라는 _parse_request_uri()를 찾을 수 있습니다.함수의 시작 부분에서
  3. 은 다음 줄을 추가합니다

    if(!isset($_SERVER['REQUEST_URI'])) 
        $_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF']; 
    
그래서 2 줄 이상 추가 한 후, 수정 된 기능은 다음과 같이 볼 수 있어야

,

protected function _parse_request_uri() 
    { 
     if(!isset($_SERVER['REQUEST_URI'])) 
      $_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF']; 

     if (! isset($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME'])) 

저장 URI .php 및 수정 된 코드는 Apache를 포함한 IIS 및 비 IIS 웹 서버에서 작동해야합니다. (아파치에서 수정 한 줄은 아무 효과가 없으므로 실수로 같은 코드를 아파치로 복사해도 걱정할 필요가 없다.)

관련 문제