2014-04-10 8 views
7

Ho bisogno di eseguire dalla riga di comando (PHP CLI) alcuni file crittografati da Zend Guard e php sembra appena uscito non appena raggiunge un file codificato senza alcun messaggio di errore . È possibile eseguire script PHP che sono codificati da Zend Guard dalla riga di comando?Esegui lo script PHP codificato con ZendGuard tramite la riga di comando

Maggiori dettagli

Nell'applicazione Attualmente sto lavorando su alcuni compiti, deve essere eseguito periodicamente. Inizialmente, abbiamo implementato i controller per alcuni URL utilizzati solo per eseguire le attività. Poi faremmo un cron job usando wget su quelle pagine. Il problema è che alcune di quelle attività necessitano di parametri da eseguire. L'utilizzo di wget per eseguire una richiesta POST non funziona poiché la prima cosa che fa Zend Guard è assegnare un cookie e quindi eseguire un reindirizzamento allo stesso URL. Sulla seconda richiesta, poiché è ora in GET, tutti i parametri sono stati persi.

Abbiamo quindi deciso di passare a uno script da riga di comando per correggere il problema. Ci piace molto questo approccio poiché risolve i problemi che abbiamo avuto con quello basato su URL. Innanzitutto, non mantiene una connessione Apache aperta per un lungo periodo di tempo. Inoltre, non espone alcuna logica interna sugli URL pubblici. Come ho detto prima, quando proviamo a eseguire questi script da riga di comando, non succede nulla, l'applicazione si chiude semplicemente.

Si utilizza Ubuntu 12.04 LTS, PHP 5.4.25 e Apache 2.2.22. Mi sono assicurato che l'estensione di Zend Guard fosse caricata correttamente nella riga di comando. Inoltre, funziona correttamente quando le pagine sono accessibili da un browser web.

Se qualcuno mi può aiutare con questo problema, sarebbe molto apprezzato. Grazie!

+1

C'è qualcosa nei registri sull'errore? Hai provato ad aumentare il tuo livello di log? – halfer

+0

dove hai inserito il tuo modulo zend guard? puoi mostrare i dettagli esatti di come e quali file in cui le directory hanno abilitato il modulo zend guard? –

+0

Che ne dici di scrivere un piccolo script PHP che "arriccia la sceneggiatura"? Il primo 'arricciatura 'apre la connessione, ottiene il cookie e viene reindirizzato. Il secondo 'arricciamento 'fa una richiesta POST e invia il cookie. Non ha i vantaggi del tuo secondo approccio, ma penso che funzionerà. – Reeno

risposta

2

Qui farò un'ipotesi. Quando voi ragazzi avete spostato lo script per essere eseguito dalla riga di comando, non avete effettivamente riscritto lo script. Basta semplicemente fare php -f sul file invece di wget sull'URL.

Se questo è il caso, probabilmente avete una logica nello script che richiede l'autenticazione o la logica del server Web con un exit/die se il parametro non viene trovato. Hai accennato al fatto che alcuni script necessitano di POST per funzionare, quindi suppongo che ci sia un $ _POST da qualche parte che ovviamente non funzionerà sulla riga di comando.

Solo un'ipotesi però.

MODIFICA: Basta leggere la parte in cui hai detto che funziona quando si accede tramite URL. Quasi sicuramente $ _POST o qualcosa di simile.

0

Si dovrebbe avvolgere ogni logica che si desidera eseguire da linea di comando nello script php dentro qualcosa come

$cli = isset($_ENV['SSH_CLIENT']); 
if($cli) { 
    // Code to run from command line here 

} else { 
    // Code for the Web here 


} 

Ciò permetterebbe di avere la stessa corsa di file dal web, e da linea di comando. Come indicato in tazer84, accertarsi che in modalità CLI non si includa la logica solo Web (ad esempio header('location: ...');, $_COOKIE, $_POST, e viceversa).

Problemi correlati