커맨드 라인에서 PHP 코드를 실행하는 방법?


163

if(function_exists("my_func")) echo 'function exists';별도의 PHP 파일을 사용하지 않고도 명령 줄을 사용하여 직접 단일 PHP 문을 실행하고 싶습니다 .

그게 어떻게 가능해 ?


1
사용자 정의 함수를 포함하는 다른 파일을 사용하지 않고 function_exists ()를 수행하는 것은 다른 방법으로 찾을 수있는 PHP 버전을 테스트하는 것 외에는별로 좋지 않습니다. 어떤 기능을 테스트하고 싶습니까?
매트 깁슨

이 함수를 테스트하려고합니다 : sg_load ()
Steve

2
정말 원하는 것처럼 sourceguardian PHP 확장 기능이 활성화되어 있는지 확인하는 것입니까?
매트 깁슨

2
그러면 phpinfo ()가 알려줄 것입니다.
jpic

답변:


256

커맨드 라인에서 PHP를 사용하려면 괜찮은 PHP 쉘인 phpsh 를 설치하는 것이 좋습니다 . 훨씬 더 재미있다.

어쨌든 php 명령은 명령 행에서 코드를 실행하기위한 두 개의 스위치를 제공합니다 .

-r <code>        Run PHP <code> without using script tags <?..?>
-R <code>        Run PHP <code> for every input line

PHP의 -r 스위치 를 다음과 같이 사용할 수 있습니다 .

php -r 'echo function_exists("foo") ? "yes" : "no";'

위의 PHP 명령은 다음 과 같이 출력 no 되고 반환 0 됩니다.

>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0

또 다른 재미있는 스위치는 php -a입니다 .

-a               Run as interactive shell

그것은의 종류에 비해 절름발이의 phpsh 하지만 설치하지 않을 경우 얻을 페이스 북에 의해 만들어진 PHP의 멋진 대화 형 쉘을 탭 완성, 역사, 등 , 다음 과 같은 -a를 사용합니다 :

>>> php -a
Interactive shell

php > echo function_exists("foo") ? "yes" : "no";
no
php > 

내 상자 * es * ( 우분투 및 아치에서 테스트 됨)와 같이 상자에서 작동하지 않으면 PHP 설정이 흐리거나 깨졌을 수 있습니다. 이 명령을 실행하면 :

php -i | grep 'API'

당신 볼 수 있습니다 :

Server API => Command Line Interface

그렇지 않으면 ,이 방법은 어쩌면 또 다른 명령은 CLI의 SAPI를 제공합니다 . php-cli를 사용해보십시오. 아마도 OS에서 사용할 수있는 패키지 또는 명령 일 수 있습니다.

당신이 경우에 당신의 PHP 명령은 CLI (명령 줄 인터페이스) SAPI (서버 API)를 사용하고 있음을 알 다음 실행 php -h | grep code하는 미친 스위치를 찾아 - year-가이 변경되지 않았으로 버전 / 설정에서 코드를 실행할 수 있습니다.

내 상자에서 작동하는지 확인하기위한 또 다른 몇 가지 예 :

>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";' 
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";' 
yes

또한 확장이 CGI 또는 Apache SAPI가 아닌 CLI에로드 될 수 있습니다. 몇몇 PHP SAPI는 다른 php.ini 파일을 사용할 것입니다 ( 예 : 젠투 박스 /etc/php/cli/php.ini/etc/php/cgi/php.ini비교) /etc/php/apache/php.ini. 와 함께 사용되는 ini 파일을 찾으십시오 php -i | grep ini.


PHP 설정이 손상되었을 수 있습니다. 힌트를 포함하여 내 대답을 업데이트했습니다.
jpic

php -a에 대한 메모를 추가했습니다.
jpic

6
phpsh는 더 이상 저자 (Facebook)가 관리하지 않으며 Google 그룹스 페이지의 누군가 가 "phpsh는 더 이상 지원되지 않거나 더 이상 유용하지 않다"고 2012 년에 말했습니다 . 개선 된 PHP 콘솔을 위해 Boris REPL 을 살펴볼 수 있습니다 .
벤 Creasy

3

명령 행에서 :

php -i | grep sourceguardian

그것이 있다면, 당신은 약간의 텍스트를 얻을 것입니다. 그렇지 않으면 아무것도 얻지 못할 것입니다.


4
나는 장님 이거나이 대답은 질문과 관련이 없습니다. 이 답변은 " PHP 코드를 .php파일 로 저장하지 않고 명령 줄에서 직접 PHP 코드를 실행하는 방법 "과 같은 질문에 어떻게 대답 합니까?
trejder

15
@trejder 잠시 동안 나는 틀린 질문에 대답했는지 궁금했지만 편집 기록과 의견을 보았습니다. 이것은 OP가 실제로 필요한 것으로 응답합니다 : 특정 PHP 확장이로드되었는지 확인합니다. 그 질문은 그 이후로 다시 정의되었으므로 지금은 잘 맞지 않습니다.
매트 깁슨

3

당신이 사용할 수있는 :

 echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php

짧은 태그 " <? = "도 도움이 될 수 있습니다.

 echo '<?= function_exists("foo") ? "yes" : "no";' | php
 echo '<?= 8+7+9 ;' | php

닫는 태그 "?>"는 선택 사항이지만 마지막 ";"을 잊지 마십시오. !


2
이것은 7 살짜리 대답보다 더 문제가있는 것 같습니다. 사용 php -r하면 것은 PHP 태그를 열기에 대해 걱정할 필요가 없습니다.
miken32

1

명령 행에서 PHP 사용

사용 " 대신에 ' -r과 CLI 버전을 사용하는 경우 창에를

php -r "echo 1"

-맞다

php -r 'echo 1'

-부정확

  PHP Parse error:  syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.