2010-07-24 2 views
1

(미안,이 제목이 잘못되어 있으면 죄송합니다. 실제로 두 가지를 수행하려고합니다. PHP에서 현재 디렉토리가 어떻게 변경 될 수 있는지 확인하고 WAMP에서 실행중인 Simpletest의 버그를 수정합니다.)chdir() 및 chroot() 외에도 PHP Windows에서 디렉토리를 변경할 수 있습니까? (Simpletest는 Windows에서 파일 버그를 포함합니다.)

EasyPHP (WAMP 변형) 내 Windows 7 로컬 컴퓨터에서 SimpleTest (simpletest.org)를 실행하고 있습니다.

테스트를 실행하면 getcwd()에 따라 디렉토리가 로컬 스크립트 디렉토리에서 C : \ Program Files (x86) \ EasyPHP \ apache로 변경됩니다.

getcwd() 출력을 검사하기위한 몇 개의 짧은 스크립트를 만들었습니다. 예상대로 현재 스크립트 경로를 반환합니다 (C : \ Users \ Burton \ Desktop \ Sites \ dbmover). 스크립트 :

해당 ServerPath/getcwd.php : <? echo getcwd(); require_once('tests/getcwd.php) ?>

해당 ServerPath/테스트/getcwd.php : <? echo getcwd(); ?>

는 모두 현재의 경로를 반환 : C : \ 사용자

dbmover 버튼 \ 바탕 화면 \ 사이트 \를 \

Simpletest 소스를 통해 chdir() 및 chroot()의 사용을 확인하는 방법을 찾았습니다. Simpletest는 chdir()을 사용하지 않습니다.

그 밖의 경로를 변경하는 방법은 무엇입니까 ??

이 상대 경로 문제는 Windows에서 사용되는 Simpletest에서 매우 일반적으로 발생합니다. This poster on stackoverflow has it, 등은 this poster입니다.

Somepeople 정상적으로 문제를 처리하지만 버그라고 생각합니다.

저는 dirname (__FILE__)을 사용하여 직접 돌아 다니고 있었지만 제대로 작동하도록 수정하고 싶습니다.

답변

0

이것은 include_path 문제와 비슷하게 들립니다. echo get_include_path();의 계시는 무엇입니까?

+0

그것은 보여줍니다; C :. 내에서 호출 \ PHP5의 \ 배 내 테스트 스크립트. (나는 php5 디렉토리가 없다). 이것은 문제 스크립트와 더미 테스트 스크립트 모두를 보여줍니다. –

1

나는 간단한 테스트를 한 번도 사용하지 않았으며, 내부를 모른 채 말하기는 어렵다. 그러나 : exec/system/등의 명령이 작업 디렉토리에 영향을 미칠 수 있습니다. 한 가지주의 할 점은 cgi 버전의 php (sapi cli가 아닌)가 스크립트의 작동 디렉토리로 변경되고 php -l 구문 검사 & 다른 응용 프로그램에 사용될 수 있다는 것입니다. 이것이 문제라면 -C 매개 변수를 전달해야합니다.

+0

고마워요. 그 밖의 무엇을 확인할 지에 대한 생각이 들었습니다. 내가 언급 한 것을 찾지 못했지만 적어도 다음에는 알게 될 것입니다. –

1

경로 문제는 Simpletest의 실행 방법으로 인해 발생합니다. 기본적으로 테스트를 호출하는 첫 번째 파일 상단에 포함 파일 인 "자동 실행"이라는 멋진 기능이 있습니다.

스크립트가 종료되기 직전에 실행되는 register_shutdown_function()을 사용합니다. 그러나이 함수가 실행되는 경로는 all wrong in many versions of WAMP입니다.

나는 a bug fix for this problem을 제출했습니다.BTW

, PHP 디렉토리를 변경할 수있는 기능은 다음과 같습니다 시스템() 간부() CHDIR() 의 chroot()는

+0

좋은 대답을 수락하십시오. ;) 그것은 실제로 우리를 (무작위 googlers) 신속하게 페이지를 훑어보고 즉시 해결되었는지 여부를 확인할 도움이 될 것입니다. –

관련 문제