Autor Zpráva
Enko
Profil
Ahoj,
mám hotový PHP skript, který když pustím z webového prohlížeče s GET parametry, tak se vykoná přesně jak potřebuji. Nicméně rád bych ještě tento skript (nebo si udělal nový) chtěl spouštět i ze shellu na Ubuntu. Skript mi zpracovává unikátní klíče. Tyto klíče chci buď zadat vstupem ze souboru (kde je na každém řádku jiný klíč), tak aby mi je PHP skript zpracoval nebo je chci předat jako parametr při spouštění z shellu, tak aby mi je PHP skript zpracoval. Poradí mi někdo prosím, jak na to? Nikdy jsem nic podobného nedělal. Protože nejsem úplně zžitý s prací v shellu, jak to pak spustím, abych si mohl otestovat, že to funguje?

Děkuji
Keeehi
Profil
Při spouštění z shellu jsou parametry v proměnné $argv. Je to velmi podobné proměnné $_GET ovšem v $argv nejsou indexy řetězce ale čísla.
Kubo2
Profil
Dodám, že treba dať pozor na nastavenie dorektívy register_argc_argv, pretože v prípade Off PHP globálnu premennú $argv nevytvorí. Jednoduchý workaround by bol približne nasledovne:

<?php

if(!ini_get('register_argc_argv')) {
    list($argc, $argv) = [ $_SERVER['argc'], $_SERVER['argv'] ];
}
Enko
Profil
Děkuji za rady. Přesně toto jsem potřeboval vědět. Nakonec jsem tam udělal takto:
<?php
//zpracovani parametru z shellu
if(count($argv) > 1){
  //preskocime prvni hodnotu pole, protoze v ni je nazev spousteneho skriptu
  //udelej neco
}
//zpracovani standartniho vstupu (souboru) z shellu
else{
  $f = fopen( 'php://stdin', 'r' );
  $i = 1;

  while($tag = fgets($f)){
    //udelej neco, $tag je hodnota z kazdeho radku, ze standartniho vstupu
  }
}
//
?>
Třeba se někomu bude hodit.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0