명령줄에서 PHP 코드 문자열 실행
다음 옵션과 같은 방법으로 명령줄에서 PHP 코드를 실행할 수 있으면 좋겠습니다.
perl -e "print 'hi';"
python -c "print 'hi'"
ruby -e "puts 'hi'"
다음을 할 수 있으면 좋겠습니다.
php "echo 'hi';"
제가 읽은 바로는-r
php에 필요한 것을 할 수 있는 옵션입니다만, 사용하려고 하면 사용할 수 없는 것 같습니다.저는 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에 그러한 옵션이 없는 경우(테스트할 수 있는 것이 없습니다)에는, 다음과 같이 할 수 있습니다.
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";'
가장 쉬운 방법은 다음과 같습니다.-r
flag. 단, 여러 줄의 입력은 허용되지 않습니다.이 문제를 해결하려면 다음과 같이 하십시오.
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
'it-source' 카테고리의 다른 글
.myd, .myi, .frm 파일에서 MySQL 데이터베이스를 복구하는 방법 (0) | 2023.01.23 |
---|---|
MySQL - 하나의 INSERT 문에 몇 개의 행을 삽입할 수 있습니까? (0) | 2023.01.15 |
도커 MariaDB 컨테이너의 영구 스토리지 컨테이너를 백업할 수 없습니다. (0) | 2023.01.15 |
Larabel 마이그레이션에서 열을 null로 만들 수 없습니다. (0) | 2023.01.15 |
문자열을 이중으로 변환합니다. 이것이 가능한가요? (0) | 2023.01.15 |