명령 줄에서 PHP 스크립트 실행


85

웹 스크립트를 구문 분석하는 데 사용되는 PHP 인터프리터를 사용하여 명령 줄에서 PHP 스크립트를 실행하려면 어떻게해야합니까?

설치된 phpinfo.php웹 쇼에서 액세스 하는 파일이 있습니다 German. 그러나 phpinfo.php- php phpinfo.phpgrepfor를 사용하여 명령 줄에서 실행하면 German찾을 수 없습니다. 그래서 두 PHP는 다릅니다. 나는 스크립트 실행해야 php하는 German설치됩니다.

어떻게 할 수 있습니까?


1
단지 할 php -i및 구문 분석이
로렌스 Cherone

1
그게 무슨 뜻입니까? 나는 그럼에도 불구하고 아무것도하지 않았다
싯다 르트 나라 얀

1
설치된 웹 서버 소프트웨어에 대한 자세한 내용을 추가 하십시오 ( 예 : phpinfo();질문에 출력 추가) . 또한 내 대답을 업데이트했습니다.
Sampo Sarrala-codidact.org

답변:


166

최신 정보:

오해 끝에 마침내 당신이하려는 일을 얻었습니다. 서버 구성 파일을 확인해야합니다. apache2 또는 다른 서버 소프트웨어를 사용하고 있습니까?

LoadModule php...로 시작하는 행을 찾으십시오. 이름이 지정된 구성 파일 / 디렉토리 mods또는 이와 유사한 것이있을 수 있습니다. 거기에서 시작하십시오.

웹 서버에서 출력을 확인 php -r 'phpinfo();' | grep php하고 행을 비교할 수도 있습니다 phpinfo();.

php대화식으로 실행하려면 :

(따라서 콘솔에 코드를 붙여 넣거나 쓸 수 있습니다)

php -a

파일을 구문 분석하고 콘솔에 출력하려면 다음을 수행하십시오.

php -f file.php

파일을 구문 분석하고 다른 파일로 출력 :

php -f file.php > results.html

다른 것이 필요하십니까?

한 줄 또는 비슷한 작은 부분 만 실행하려면 다음을 사용할 수 있습니다.

php -r '$x = "Hello World"; echo "$x\n";'

Linux를 실행하는 경우 man php콘솔에서 수행하십시오 .

fpm을 통해 php를 실행해야하거나 실행하려면 cli fcgi를 사용하십시오.

SCRIPT_NAME="file.php" SCRIP_FILENAME="file.php" REQUEST_METHOD="GET" cgi-fcgi -bind -connect "/var/run/php-fpm/php-fpm.sock"

여기서 /var/run/php-fpm/php-fpm.sock은 php-fpm 소켓 파일입니다.


4
아니요. 문제는 시스템에 여러 개의 PHP가 있다는 것입니다. 웹 스크립트를 구문 분석하는 데 사용되는 PHP를 찾아야합니다. 콘솔에서 PHP를 실행하면 클래스를 찾을 수 없지만 웹에서 해당 스크립트를 호출하면 문제가 발생하지 않습니다. 그래서 사용하는 PHP가 다르다는 뜻 이지요?
Siddharth

2
@Siddharth 서버 S / W 구성에서 확인해야합니다. 질문에 서버 세부 정보를 추가하십시오.
Sampo Sarrala-codidact.org

2
예. 어떻게 확인할 수 있습니까? 요컨대, 명령 줄에서 올바른 PHP를 어떻게 사용할 수 있습니까?
Siddharth

2
Linux에서는을 사용 which php하여 기본적으로 실행중인 실행 파일을 알 수 있습니다 . 다른 실행 파일을 사용하려면 사용하려는 실행 파일의 전체 경로를 지정해야합니다./path/to/specific/php -f file.php > results.html
Emilio P.

1
좋은 세부 사항, 설명은 +1. 주석을 달기 위해 여기에서 환경 변수를 살펴보십시오. 스크립트가 php.exe
Leandro

3

SuSE에는 Apache 용과 CLI (명령 줄 인터페이스) 용의 두 가지 PHP 용 구성 파일이 있습니다. / etc / php5 / 디렉토리에서 "apache2"디렉토리와 "cli"디렉토리를 찾을 수 있습니다. 각각 "php.ini"파일이 있습니다. 파일은 동일한 목적 (php 구성)을위한 것이지만 PHP를 실행하는 두 가지 다른 방법에 적용됩니다. 이 파일은 무엇보다도 PHP가 사용하는 모듈을로드합니다.

OS가 비슷하다면이 두 파일은 같지 않을 것입니다. Apache php.ini는 아마도 gearman 모듈을로드하고 있지만 cli php.ini는 그렇지 않습니다. 모듈이 설치되었을 때 (자동 또는 수동) 아마도 Apache php.ini 파일 만 업데이트했을 것입니다.

Apache php.ini 파일을 cli 디렉토리에 복사하여 CLI 환경을 Apache 환경과 똑같이 만들 수 있습니다.

또는 Apache 파일에서 gearman 모듈을로드하는 줄을 찾아 CLI 파일에 복사 / 붙여 넣기 할 수 있습니다.


3

Windows에서이 문제에 대한 해결책을 찾고 있었는데, vars ok 환경이 없다면 전체 디렉토리를 넣어야하는 것 같습니다. 예를 들어. PHP와 동일한 디렉토리에있는 파일 :

F:\myfolder\php\php.exe -f F:\myfolder\php\script.php

명령 프롬프트에서이 그대로 실행하면 시작시은 >아마도 -f ...(오류 일 가능성이있는) 의 출력을 php.exe 파일로 리디렉션 하고 내용을 지울 것입니다.
mwfearnley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.