>백엔드 개발 >PHP 튜토리얼 >php 명령줄(cli)에서 PHP 스크립트 파일을 실행하기 위한 상대 경로 문제에 대한 해결 방법_php 팁

php 명령줄(cli)에서 PHP 스크립트 파일을 실행하기 위한 상대 경로 문제에 대한 해결 방법_php 팁

WBOY
WBOY원래의
2016-05-16 20:15:091056검색

php 명령줄에서 .php 파일을 실행할 때 실행 환경(getcwd())의 작업 디렉터리는 php 명령 프로그램(php.exe)이 위치한 디렉터리이므로 상대 디렉터리를 사용하려는 경우 파일의 경로를 먼저 전환해야 합니다. 현재 작업 디렉터리가 작동합니다.

소규모 테스트 프로그램:

코드 복사 코드는 다음과 같습니다.

$oldpath = getcwd(); // 원래 작업 디렉토리 php.exe가 위치한 디렉토리
$path = 디렉토리이름(__FILE__)
chdir($path); //작업 디렉토리를 현재 파일이 있는 디렉토리로 전환
$fpath = "포럼/readme.txt";

$fp = fopen($fpath, "a b"); // 작업 디렉터리를 전환하지 않으면 파일을 찾을 수 없다는 오류가 보고됩니다
fwrite($fp, "oldpath:".$oldpath."-newpath:".getcwd());
fclose($fp);
?>

crotab을 사용하여 정기적으로 실행해야 하는 프로그램에도 이 문제가 있습니다. 다음 글을 참고하시면 됩니다.

crontab에서 정기적으로 실행해야 하는 php 스크립트를 이용하여 스크립트를 작성했는데 아래와 같은 오류가 발생했습니다

코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

/var/www/html/bt/e/BtSys:.:/usr/share/pear:/usr/share/phpPHP 경고: require(../class/connect.php): 스트림을 열지 못했습니다: 해당 파일이 없습니다. 또는 17행의 /var/www/html/bt/e/BtSys/torrents-scrape.php 디렉토리
PHP 치명적인 오류: require(): 필수 '../class/connect.php'를 열지 못했습니다(include_path='/var/www/html/bt/e/BtSys:.:/usr/share/pear:/usr/ share/php') /var/www/html/bt/e/BtSys/torrents-scrape.php 17행


해결 방법 1을 시도하고 다음 코드를 추가하세요
코드 복사 코드는 다음과 같습니다.

// 포함 경로 설정
$cur_dir=getcwd()
$cur_dir=$basedir = 디렉토리 이름(__FILE__)
$path = ini_get('include_path')
ini_set("include_path", "$cur_dir:$path")
$path = ini_get('include_path')
//에코 $경로
요구(../class/a.php)
요구(../class/b.php)
.............

실행 실패

해결책 2를 시도하고 다음 코드를 추가하세요

다음과 같이 코드를 복사하세요.

코드 복사 코드는 다음과 같습니다.

$cur_dir = 디렉토리 이름(__FILE__)
chdir($cur_dir)
요구(../class/a.php)
요구(../class/b.php)

성공적으로 실행

요약: 요구시 상대디렉토리라면 crontab에서 php 스크립트 실행시 스크립트가 위치한 디렉토리로 들어가야 합니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.