Komut satırında PHP kodu bir dize yürütmek

4 Cevap php

Ben aşağıdaki seçenekler nasıl benzer komut satırında PHP kod satırı çalışabiliyor olmak istiyorum:

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

Ben yapabilmek istiyorum:

:~> php "echo 'hi';"

Ben bunu kullanmaya çalıştığınızda ancak kullanılabilir olması için görünmüyor, ben php için gereken ne yapabilirim bir-r seçeneği olduğunu okudum. Ben bir-r seçeneği mevcut olan 4.4.9 PHP 5.2.13 ve PHP kullanarak ve ne denedim.

Çalışır, ancak bunu yapmak için bir daha "doğru" yolu olmalı gibi hissediyorum sırf ben onun büyük bir hayranı değilim - Ben bu senaryoyu (ben run_php.php denilen) yazdı.

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

Benim soru şudur:-r seçeneği var mı? Yardım - Öyleyse ben çalıştırdığınızda, neden mevcut değildir? No-r seçeneği varsa, ne (bir aracı komut mümkünse yazmadan) Bunu yapmanın en iyi yolu nedir?

Teşekkürler!

=== DÜZENLEME ===

Ben yukarıda çok açık olduğunu sanmıyorum, çünkü,-r seçeneği benim için kullanılabilir değil. İşte ben koşuyorum PHP iki sürümleri için php-h çıktı.

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>.

NO-r seçeneği vardır. Ben-r seçeneğini kullanmaya çalıştığınızda alıyorum:

Error in argument 1, char 2: option not found r

Karışıklık için özür dilerim.

4 Cevap

EDIT2: Evet, bu PHP 5.2's cli SAPI içinde var.

EDIT: Eğer yükseltme edemez ve PHP 5.2 böyle bir seçenek var ki durum buysa (ben test etmek için elinizde yoksa), bunu yapabilirsiniz:

glopes@nebm:~$ echo "<?php echo \"hi\\n\";" | php
hi

Orijinal:

(PHP 5.2 hakkında emin değilim gerçi) -r seçenek gerçekten var:

D:\>php -r "echo 'hi';";
hi

Sadece PHP komut satırı sürümünü kullandığınızdan emin olun. php --version Sana böyle bir şey ("cli" haber) vermelidir:

D:\>php --version
PHP 5.3.0 (cli) (built: May 20 2010 19:05:12) (DEBUG)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

Zaten değil varsa, PHP command line features bu sayfaya bir göz atın. OS ve tek veya çift tırnak dayalı konularda bazı mesajlar vardır.

Ben de PHP bilgileri kontrol ederim

php-i

(- disable-cli) PHP compiled with CLI support disabled olup olmadığını görmek için.

Ekstra Yarım kolon sonunda gerekli değildir.

Sen php -r "echo 'hi';" yerine php -r "echo 'hi';"; arasında sayabiliriz

Başka bir örnek (komut satırında geçerli zaman damgası almak için):

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

PHP'nin yeni sürümleri sadece "php-a" yazın ve size PHP ile deneme yapabilirsiniz İnteraktif modda, içine hop.