PHP의 경로 코드는 cron에서 동일한 방식으로 작동합니까?

PHP의 경로 코드는 cron에서 동일한 방식으로 작동합니까?

crontab에서 PHP 스크립트를 실행할 때 파일 경로(php 스크립트와 동일한 위치의 하위 폴더에 있음)가 포함된 PHP 코드가 계속 작동합니까?

내 PHP 코드는 "ref_files" 하위 폴더에서 텍스트 파일을 읽습니다. 내 PC 브라우저에서 PHP를 실행할 때 100% 유효합니다:

$SettingsFile = "./ref_files/push1.txt";
$extData = fopen($SettingsFile, "r");
    while ($line = fgets($extData, 2048)){ //reads the file line by line
        echo $line . "<br>";
    }
fclose($extData);

스크립트가 crontab(다른 위치에서 실행되는 것으로 생각됨)에서 실행될 때 이것이 중단됩니까?

Raspberry Pi 3 모델 B Plus Rev 1.3 Arm v7 OMV 4.1.35.1 Debian 9 Stretch PHP 7.0.33 Nginx 1.10.3

편집: 다음이 해결책인 것 같습니다.

$CodeRoot = dirname(__FILE__);

$SettingsFile = "$CodeRoot/ref_files/push1.txt";
$extData = fopen($SettingsFile, "r");
    while ($line = fgets($extData, 2048)){ //reads the file line by line
        echo $line . "<br>";
    }
fclose($extData);

답변1

크론 작업은 cd먼저 올바른 디렉터리에 도달해야 합니다.

예를 들어, 항목의 "명령" 부분으로 다음과 같은 내용을 입력합니다 crontab.

( cd /path/to/php/script/directory ; php myscript.php )

관련 정보