ugrás a tartalomhoz

Shell script PHP-ben <?php nélkül

vbence · 2009. Dec. 18. (P), 14.04
Halihó!

Időről időre találok megoldást aztán elfelejtem aztán megint megtalálom stb... Szóval valaki le tudná írni, hogy linux és freebsd környezetben hogyan tudok olyan shellscriptként futó PHP-t írni, ami alapból kód-módban van, azaz nem kell <?php az egész hóbelevanc elé?
 
1

php -r "$(cat valami.php)"

Török Gábor · 2009. Dec. 18. (P), 15.30
php -r "$(cat valami.php)"
2

valami olyanban reménykedtem...

vbence · 2009. Dec. 18. (P), 20.10
... hogy
#!/usr/bin/php -titkoskapcsoló <$0

phpinfo(); // és lefutna
3

Tudtommal így nem lehet, mert

Török Gábor · 2009. Dec. 19. (Szo), 11.36
Tudtommal így nem lehet, mert a PHP értelmező csak a <?php hatására vált át „PHP módba”. A Stack Overflow vonatkozó PHP withouth start/end tags cikkében találsz néhány trükköt, de a végső konklúzió ott is ez.
4

Alternatív megoldás

Török Gábor · 2009. Dec. 19. (Szo), 11.44
Alternatív megoldásként fogsz egy myphp-t, ami a fennebb vázolt megoldásra támaszkodik.

#!/bin/bash

/usr/bin/php -r "$(cat $1)"


A PHP fájlokban pedig a standard php bináris helyett a myphp-ra hivatkozol.

#!/home/gabor/tmp/myphp

phpinfo();
$ ./3.php
phpinfo()
PHP Version => 5.2.9
⋮
Értelemszerűen ez is csak trükk, a hordozhatóságnak pedig lőttek.
5

Köszi

vbence · 2009. Dec. 20. (V), 18.18
Igazán megerőltethetnék magukat PHP-ék mondjuk egy fenti "myphp" szerűséget hozzácsomagolni minden platformra.

Ha időközben kitalálok valamit akkor itt beszámolok róla... :)
6

csak simán -r

erenon · 2009. Dec. 20. (V), 22.21
Nálam a
php -r "phpinfo();"
is ad kimenetet. (Helyeset, természetesen)
Ubuntu 9.10, bash, PHP 5.2.x
7

man?

Ustak · 2009. Dec. 20. (V), 23.40
Ha beütitek a

man php
parancsot akkor idézem

-r code        Run PHP code without using script tags '<?..?>'
Ez ubuntu 9.10 alatt vala.
Üdv:
Gábor.
8

Igen, ez a legelső

Török Gábor · 2009. Dec. 21. (H), 10.12
Igen, ez a legelső hozzászólásban is már benne volt, de Bence olyan megoldást keres, hogy a PHP-ben írt shell scriptekben ne kelljen használnia a script tageket.
9

nem értem

erenon · 2009. Dec. 21. (H), 11.44
Én nem így értelmeztem a kérdést, és nem is igazán értem, hogy miért kéne shell-ből kiváltani php-be (gyorsan és röviden), hogy ott shell parancsokat futtassunk. No majd megmondja a kedves kérdező, hogy mire is gondolt.
10

Futtatás

Poetro · 2009. Dec. 21. (H), 15.13
A lényeg számára, hogy PHP-t futtasson shell-ben, mint Windows alatt a cmd (parancssor). Ahogyan sokan Perl, awk stb szkripeket futtatnak. Nem shell parancsokat akar futtatni, hanem PHPt. Mondjuk egy kis log tisztítás, fájl áthelyezések stb. Szóval mindent amit PHP alatt végre lehet hajtani. Csak kényelmetlen hogy minden fájl elejére be kell írni, hogy <?php, mivel az nem része a tényleges kódnak.
Példa Perl-es Shell script-re:
#!/usr/bin/perl
sub show_details {
  return "Input is $_[0]";
}
while (@ARGV != 0) {
  $y = shift;
  $x = show_details($y);
  print "$x\n";
}
Ugyanez PHP-ban:
#!/usr/bin/php
<?php
function sayHello ($ip) {
  return "Input is " . $ip;
}
for ($i = 1; $i < $argc; $i++ ) {
  echo sayHello($argv[$i]) . "\n";
}
?>
Namármost itt a <?php, ?> duót szeretné a kérdező elhagyni.
11

megvan

erenon · 2009. Dec. 21. (H), 16.04
Ok, kösz, mostmár értem a kérdést. Valahogy nem tűnt logikusnak, hogy egy fájlban meg kell spórolni egy sort. (A zárótag elhagyható). Közvetlenül konzolban még megérteném.