SimpleTest 으로 동작하지 않을 식별 파일 변수를 죽는가?
-
29-09-2020 - |
문제
내가 사용하려고 SimpleTest 으로 동작 코드를 사용하여 공급여 maroonbytes.내가 사용하여 램프와 NetBeans6.9.
이 test.php 페이지중에 브라우저입니다.나는 스텁 테스트 장소에 보여줍에서 드롭다운 항목을 선택합니다.을 실행하려고 할 때,그것을 얻 2PHP 오류가 있습니다:
메시지:include_once(/var/www/sparts3/main/tests/basic_test_v.php):을 열지 못했 스트림:그런 파일이나 디렉토리
메시지:include_once():개 '/var/www/sparts3/main/tests/basic_test_v.php' 포함 (include_path='.:/usr/share/php:/usr/share/배')
경로는 잘못된-- basic_test_v.php 하위 /검/보기.
디버거 점에서 이 test.php:
function add_test($file, &$test)
어떤 이유로 NetBeans 노출되지 않 달러 가치의 파일 이 시점에서.이 뜻은 그것은 빈?
나는 이미 jimmied 코드의 라인을 얻을 수 있기 때문에 저는 과거에는 코드는 404 페이지를 찾을 수 없습니다.그것은 듯 디버거를 얻었는 원인 검증을 실패합니다.그래서 나는 추가 조건에서 내 무식한 방법(저는지 확인해야 처리된 예외 또는 뭔가):
if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START')
{ ... }
어떻게 해결할 수 있는 이?BTW,이를 해결하려고 시도했 나의 다른 글, 나는 것입 업데이트;보였고 이 불연속 질문입니다.
UPDATE1: 나는 사용하는 웹 개발자는 추가서(Firefox)과 실험 포스트 항목이 있습니다.내가 믿고 이들은 잘못 처리되는 코드입니다.그것은 여전히 나타나 NetBeans 방해하고 있에서 보여주는 어떤 문자열 변수를 디버깅하는 동안;이것은 실망이다.
UPDATE2: 그것은 나에게 보인다는 유효한 코드 처리를 중지에서 동일한 지점 NetBeans 정지 표시하는 변수입니다.나를 단계별로 실행 test.php.나는 도중에을 통해 기능, add_test($file,&$테스트).이 기능으로 열리는 경우 statement;을 완료하고,내가 볼 수 있는 변수입니다.새로운 if:
if (file_exists($implementation))
{
require_once ($implementation); ...
한 빨리 나에는 라인,2 일:
- 변수가 전시에서 공 NetBeans 를 제외한 자동 전역
- 코드로 동작하는 경우 $구현 빈 변수
추가 문을 위한 이러한 라인:
$implementation = 'http://var/www/sparts3/main/tests/views/basic_test_view.php';
이것은 변화하지 않는다.브라우저에 출력하는지 여부에 관계없이 동일합니다 난 사용하여 NetBeans/Xdebug 나지 않습니다.
그래서 그처럼 보이기 시작 PHP 처리한다.그 존재하는가?내가 하려고 할 수 있습 업로드하고 호스트에서 서비스를 위한 진단 단서만,그리고 cheerlessly 기 때문에 CI 하는 기능이 없다면 디버그의 관심이 없다.
UPDATE3: 나는 모든 노력을 밖에서는 고객님이 PC.동일한 브라우저 결과(플러스 일부는"사용"오류가 뭔가를 PHP4 대5).나를 디버깅할 수 있에는 PC(는 경우 Xdebug 작동),그러나 있는 것 같은 지점입니다.
해결책
당신은 이름이 바뀐 basic_test_v.php 하기 basic_test_view.php?코드 기대하고 파일명을하고 마우스 오른쪽 버튼으로 저장됩.
UPDATE1 (yes im bored)
나는 이미 jimmied 코드의 라인 기 때문에 그것을 얻게 과거 Code404 페이지를 찾을 수 없습니다.그것은 듯 디버거 을 얻으로 검증하여 실패합니다.그래서 나는 추가 조건에서 내 무지 방법(저는지 확인해야 처리 예외가 발생하거나 뭔가):
if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START') { ... }
어떻게 해결할 수 있는 이?BTW,이를 해결하려고 시도했 나 다른 게시는 것입 업데이트;보였고 이는 이산 질문입니다.
"오른쪽"이 문제를 솔루션입니다:설정 $config['uri_protocol'] = "AUTO";
하기 $config['uri_protocol'] = "PATH_INFO";
고 $config['enable_query_strings'] = FALSE;
하기 $config['enable_query_strings'] = TRUE;
에 config.php (댓글을 읽은 위의 설정,그들은 아주 도움이)
후 깊이 살펴보 test.php 나는 당신을 말할 수 있는 테스트 파일을 지정해야 다음과 같다:
%name%_%type%_test.php 는(%유형%은 단수)
을 더 분명히 여기 예를 들어:
했을 환영합 컨트롤러 위치에서 파일 welcome.php 테스트를 위한 이 컨트롤러 라는 이름 welcome_controller_test.php 저장 아래에서 테스트/컨트롤러/
이 test.php 스크립트를 로드하려고 하는 테스트 파일 테스트 파일이 자동으로 합니다.그러나 제 생각에 그것을 수정해야합니다.
나는 변경 기능 get_loader_id 및 add_test 같은 다음과 같이
function get_loader_id($file, $type) {
$loader_id = str_replace("_{$type}_test.php", "", basename($file));
return $loader_id;
}
function add_test($file, &$test) {
$implementation = '';
if (preg_match('/_controller/', $file)) {
$controller = get_loader_id($file, 'controller');
$implementation = APPLICATION . 'controllers/' . $controller . '.php';
} elseif (preg_match('/_model/', $file)) {
$model = get_loader_id($file, 'model');
$implementation = APPLICATION . 'models/' . $model . '_model.php';
} elseif (preg_match('/_view/', $file)) {
$view = get_loader_id($file, 'view');
$implementation = APPLICATION . 'views/' . $view . '.php';
} elseif (preg_match('/_helper/', $file)) {
$helper = get_loader_id($file, 'helper');
$implementation = APPLICATION . 'helpers/' . $helper . '.php';
} elseif (preg_match('/_library/', $file)) {
$library = get_loader_id($file, 'library');
$implementation = APPLICATION . 'libraries/' . $library . '.php';
}
if (file_exists($implementation)) {
require_once ($implementation);
}
$test->addFile($file);
}
는 경우 다음과 같은 이름 규칙을 모두해 잘 실행 (나는 그것을 테스트에는 맥북 젠드 서버 ce,xdebug,simpletest 및 netbeans6.9)
다른 팁
만약 당신이 무엇을 로드하는 볼,당신은 시도를 사용하여 $this->load->view('basic_test_view');
?