오늘 동료가 갑자기 예약된 작업을 수행하기 위해 작성한 PHP 스크립트가 항상 실행되지 않는다고 말했습니다.
스크립트 자체는 매우 간단합니다. 몇 개의 라이브러리 파일만 포함되어 있으며 함수에 오류가 없어야 하며 이 함수는 문제가 없습니다. 브라우저를 사용하여 로컬로 페이지에 접속했는데, 실행에는 문제가 없는 것 같았습니다. 동료의 예약된 작업에 문제가 있는 것 같았습니다. 다시 명령줄을 열어서 php를 이용해 스크립트를 직접 실행해 보았는데, require include 파일에 오류가 있는 것 같았습니다.
원인은 모르겠지만 에러 리포트를 보니 경로가 잘못됐네요. 상대경로와 관련이 있는 것 같아서 상대경로를 모두 절대경로로 변경한 뒤 실행해봤습니다. 문제가 해결되었습니다.
바이두에서 검색해보니 PHP를 이용해 스크립트를 실행할 때 스크립트가 실행되는 위치가 현재 PHP 명령이 실행되는 경로여서 상대경로가 잘못된 것을 알게 되었습니다. 문제를 해결하는 방법에는 두 가지가 있습니다.
1. 대신 절대 경로를 사용하는 것이 더 번거롭습니다. 포함된 모든 파일에는 직접 포함된 파일 경로가 포함됩니다. 그 중 하나가 잘못되면 오류가 발생할 수 있으므로 해당 파일을 실행할 때만 사용할 수 있습니다. 비교적 간단합니다.
2. chdir 함수를 사용하여 현재 실행 디렉터리를 파일이 있는 디렉터리로 변경합니다. chdir(dirname(__FILE__));
마지막으로 PHP의 cli 명령줄 모드를 간략하게 소개하겠습니다
먼저 PHP의 CLI(명령줄 인터페이스)모드
로 들어갑니다.cyguin-> $ ./php --ini(显示配置文件信息)
에 다음이 표시됩니다.
configuration file(php.ini) path: c:/Windows Loaded configuration file: c:/wamp/bin/php/php5.3.0/php.ini scan for additional .ini files in: (none) additional .ini files parsed: (none)
$./php --help(PHP 관련 정보 표시)
$./php --rf 8a11bc632ea32a57b3e3693c7987c420 (8a11bc632ea32a57b3e3693c7987c420 함수에 대한 정보 표시)
$./php --fc 8a11bc632ea32a57b3e3693c7987c420 (8a11bc632ea32a57b3e3693c7987c420 클래스 정보 표시)
$./php --re 8a11bc632ea32a57b3e3693c7987c420 (8a11bc632ea32a57b3e3693c7987c420 확장 정보 표시)
$./php --ri 8a11bc632ea32a57b3e3693c7987c420 (8a11bc632ea32a57b3e3693c7987c420 확장 구성 표시)
$./php -l 28897b20adb25fbae118a3f80f538dec : 구문 확인
예: $./php -l c:/wamp/www/1.php
실행 결과: xxx
에서 구문 오류가 감지되지 않았습니다.
$./php -v : 버전 정보 및 실행 모드 cgi/cli 표시
실행 결과:
PHP 5.3.0(cli)(작성일: 2009년 6월 29일 21:25:23)
저작권 (c) 1997-2009 PHP 그룹
Zend 엔진 v2.3.0, 저작권 (c) 1998-2009 Zend Technologies
$./php -f 28897b20adb25fbae118a3f80f538dec:파일 구문 분석 및 실행
예: $./php -f c:/wamp/www/1.php
$./php -h : 도움말 파일 표시
$./php -r ffbe95d20f3893062224282accb13e8f: bb9bd6d87db7f8730c53cb084e6b4d2d 태그를 사용하지 않고 PHP 코드 실행
예: $./php -r 'print("hello!");' 또는 $./php -r 'echo "hello!";'
실행 결과: 안녕하세요!
$./php -a : 대화형 모드로 전환
Linux에서는 다음과 같이 표시됩니다.
php>
창문 아래:
필수 입력:
<?php echo "hello world!"; ?>
그런 다음 ctl c를 사용하여 출력을 얻으십시오.
PHP5.3.0에서는 결과를 직접 얻을 수 없기 때문에 직접 사용할 수 없습니다.
<?php echo "hello world!"; ?>
$./php -c : php.ini를 검색할 위치를 지정하거나 특정 ini 파일을 지정합니다.
$./php -n : php.ini를 사용하지 마세요
$./php -d foo [=bar] : INI 파일의 foo 항목 값을 bar로 정의합니다
$./php -m : 모든 모듈, php 모듈, zend 모듈 표시
$./php -e : 디버거/프로파일러에 대한 확장 정보 생성
$./php -B 6f51180bb1dda8e53081ff7b2e6e8602 : 표준 입력 확인 실행을 처리하는 코드입니다. PHP5의 새로운 기능.
예:
$./php -B 'echo "hello world";'
출력 결과: hello world
$./php -R ffbe95d20f3893062224282accb13e8f : 각 줄마다 실행되는 PHP 코드입니다. PHP5의 새로운 기능.
$./php -F 5e5f5201d30278e824714d7a379238cb :
$./php -H 9fdf4c0bbbe72496ae7cf95851354ef1 : 입력 처리 후 실행되는 코드
$./php -s : HTML 구문 강조 표시 코드
$./php -w : 공백과 주석을 제거한 코드 가져오기
예:
$./php -w c:/www/1.php
$./php -z 28897b20adb25fbae118a3f80f538dec : Zend 확장 파일 로드
$pwd: 현재 경로 표시--enable-cli, --enable-cgi