it-source

명령줄에서 PHP 코드 문자열 실행

criticalcode 2023. 1. 15. 16:58
반응형

명령줄에서 PHP 코드 문자열 실행

다음 옵션과 같은 방법으로 명령줄에서 PHP 코드를 실행할 수 있으면 좋겠습니다.

perl -e "print 'hi';"
python -c "print 'hi'"
ruby -e "puts 'hi'"

다음을 할 수 있으면 좋겠습니다.

php "echo 'hi';"

제가 읽은 바로는-rphp에 필요한 것을 할 수 있는 옵션입니다만, 사용하려고 하면 사용할 수 없는 것 같습니다.저는 PHP 5.2.13과 PHP 4.4.9를 사용해봤지만 둘 다 PHP 5.2.13과 PHP 4.4.9는-r옵션을 사용할 수 있습니다.

저는 (제가 run_php.php라고 불렀던) 이 대본을 썼지만, 저는 단지 더 "올바른" 방법이 있어야 한다고 생각하기 때문에 그 대본을 별로 좋아하지 않습니다.

#!/usr/bin/php5 -q
<?php echo eval($argv[1]); ?>

이 있나요?-r옵션?그렇다면 실행 시 사용할 수 없는 이유는 무엇입니까?--help없는 경우-r(가능한 경우 중간 스크립트를 작성하지 않고) 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?


위가 명확하지 않다고 생각하니까-r옵션을 사용할 수 없습니다.여기 있습니다php -h실행 중인 두 버전의 PHP에 대한 출력을 제공합니다.

PHP 4.4.9

Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
       php <file> [args...]
  -a               Run interactively
  -C               Do not chdir to the script's directory
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse <file>.  Implies `-q'
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -q               Quiet-mode.  Suppress HTTP Header output.
  -s               Display colour syntax highlighted source.
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

PHP 5.2.13

Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
       php <file> [args...]
  -a               Run interactively
  -C               Do not chdir to the script's directory
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse <file>.  Implies `-q'
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -q               Quiet-mode.  Suppress HTTP Header output.
  -s               Display colour syntax highlighted source.
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

-r 옵션은 없습니다.를 사용하려고 하면-r옵션 제공:

인수 1, 문자 2에 오류가 있습니다. 옵션을 찾을 수 없습니다.

혼란을 드려 죄송합니다.

네, PHP 5.2의 CLI SAPI에 있습니다.

업그레이드를 할 수 없고, PHP 5.2에 그러한 옵션이 없는 경우(테스트할 수 있는 것이 없습니다)에는, 다음과 같이 할 수 있습니다.

echo "<?hi\n\" | php
안녕하세요.

오리지널:

과연 이 있다.-r옵션(PHP 5.2에 대해서는 잘 모르겠습니다만):

php - r "hi";
안녕하세요.

명령줄 버전의 PHP를 사용하고 있는지 확인하십시오. php --version다음과 같은 정보가 표시됩니다(예: "cli").

php --버전
PHP 5.3.0 (cli) (구축:2010년 5월 20일 19:05:12) (DEBUG)저작권(c) 1997-2009 PHP 그룹Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

새로운 버전의 PHP에서는 "php -a"를 입력하고 인터랙티브 모드로 넘어가면 PHP로 실험할 수 있습니다.

마지막에는 세미콜론이 추가로 필요하지 않습니다.

언급할 수 있다php -r "echo 'hi';"대신php -r "echo 'hi';";

다른 예(명령줄에서 현재 타임스탬프를 가져오는 경우):

php -r 'print time()."\n";'

가장 쉬운 방법은 다음과 같습니다.-rflag. 단, 여러 줄의 입력은 허용되지 않습니다.이 문제를 해결하려면 다음과 같이 하십시오.

php -r "passthru(file_get_contents('php://stdin'));"

이를 통해 다음과 같이 표준 입력에서 파이프를 연결할 수 있습니다.

echo -n "echo 'test';" | php -r "passthru(file_get_contents('php://stdin'));"

원래 ''가 에는 '''를 합니다.-r를 사용할 수 . 플래그를 . -f 플래그는 표준 을 파일로 만 하면 열 수 있습니다. -f는 표준 입력을 사용할 수 있습니다. -f는 표준 입력입니다. -f는 열 수 있습니다.php -f /dev/stdin

a) 시작 부분에 공백이 있어야 점에 하십시오.<?php §:

echo -ne " <?php\necho 'test';" | php -f /dev/stdin

PHP 명령줄 기능에 대한 이 페이지를 참조하십시오(아직 보지 않은 경우).OS 및 큰따옴표 또는 작은따옴표를 기반으로 문제에 대한 게시물이 있습니다.

PHP 정보도 확인하겠습니다.

php - i

PHP가 CLI 지원을 해제한 상태로 컴파일되었는지 확인합니다(--disable-cli).

최근에 찾은 psysh는 명령줄에서도 사용할 수 있는 인터랙티브 디버거입니다.

언급URL : https://stackoverflow.com/questions/2954540/execute-a-string-of-php-code-on-the-command-line

반응형