2013-06-05 5 views
2

그래서 CodeIgniter가 404를 제외하고 출력을 표시하지 않는 이유를 해결하려고합니다. 나는 모듈 재 작성에 PHP와 아파치와 codeigniter에서 로깅하는 오류로부터 모든 것을 검사했다. 모든 것이 잘 구성된 것 같습니다. CodeIgniter 컨트롤러 클래스를 인스턴스화 할 수 없습니다.

은 내가 CodeIgniter의 코어 파일로 다이빙을 시작하고 요청 된 컨트롤러 클래스의 인스턴스를하려고 아래는 라인에 충돌 한 것으로 나타났습니다 :

 $class = $RTR->fetch_class(); 
     $method = $RTR->fetch_method(); 

echo 'looking for class: ' . $class . '<br/>'; 
if(class_exists($class) == false) { 

       ) 
     { 
       echo 'class does not exist: ' . $class; 
       show_404("{$class}/{$method}"); 
     } 
} 

/* 
* ------------------------------------------------------ 
* Is there a "pre_controller" hook? 
* ------------------------------------------------------ 
*/ 
     $EXT->_call_hook('pre_controller'); 
echo '<br/>after precontroller'; 
/* 
* ------------------------------------------------------ 
* Instantiate the requested controller 
* ------------------------------------------------------ 
*/ 
     // Mark a start point so we can benchmark the controller 
     $BM->mark('controller_execution_time_('.$class.'/'.$method.')_start'); 

echo '<br/>before class init: ' . $class; 
     $CI = new $class(); 
echo '<br/>after class init'; 

이것은 /core/CodeIgniter.php 파일 내에을 . 여기에 출력됩니다 :

CodeIgniter.php 
looking for class: servicecontroller 

after precontroller 
before class init: servicecontroller 

은 기본적으로는이 servicecontroller 클래스를 찾을 수 나를 말하고,하지만 그것을 인스턴스화하려고 할 때, 그것은 충돌합니다. PHP 오류 로깅이 활성화되어 있고 display_errors가 켜져 있습니다. 만약 내가 여기 근처에 PHP 오류가 강제로, 나는 페이지에서 볼 수 있지만이 하나. 누구나 왜이 줄을 지나갈 수 없는지 아는 사람 있습니까?

servicecontroller.php는 다음과 같이 구성되지 않은 : 핵심 시스템 폴더에서 할

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class servicecontroller extends CI_Controller { 
} 
+1

클래스를 '클래스 Servicecontroller extends CI_Controller'로 변경해보십시오. 문서에서 명시 적으로 클래스 이름은 대문자로 시작해야하며 소문자는 유효하지 않습니다. – keithhatfield

+0

음 ... 아무것도하지 않는 것 같았다 : - \ –

답변

0

아무것도.

  • 이 설정을 확인 index.php를 폴더 내의 최신의
  • 확인 htaccess로 파일에

    1. 업데이트 시스템 폴더/route.php 파일
    2. 호스트에 체크 mod_rewrite를 아파치 모듈이
    3. 을 사용할 수있는 경우
  • 7

    이 문제의 근원은 mysql_connect를 사용하여 데이터베이스에 연결하는 중에 오류가 발생했습니다. 어떤 이유로 든 어떤 에러도 발생하지 않을 것이고, "죽을 수도 ("오류 ... "), 아무것도하지 않습니다. 이것은 우리가 서버에서 PHP 5.4를 사용했기 때문에 mysql_connect가 더 이상 지원되지 않는 것 같습니다. mysqlnd가 설치되어 있지 않다면 데이터베이스 드라이버를 'mysqli'로 바꿔서 CodeIgniter가 드라이버를 가지고 있고 php5-mysql을 다음과 같이 설치하면된다. apt-get install php5-mysql 다른 사람들에게 도움이되기를 바랍니다.

    0

    는 문제는 데이터베이스 연결했다 .

    config/database.php

    찾기 : $db['default']['dbdriver'] = 'mysqli'; 함께 그 교체 : $db['default']['dbdriver'] = 'mysql';

    을 또는 PHP에서 "MySQLi"는 디폴트로 확장을 사용

    당신을 엽니 다.

    1

    그래서 나는 다음 데이터베이스 설정 파일에있는 포트를 설정했고 방랑을 사용하고이 일을 내 문제를 해결 한 -. 내가 표현 엔진을 사용하여이 문제를 가지고

    관련 문제