Desidero che gli script PHP vengano eseguiti sia su riga di comando che sul sito Web (utilizzo Apache e Nginx), quindi inserisco #!/Usr/bin/php nella prima riga dei miei script ma appare sul sito Web ...Come posso evitare di mostrare "#!/Usr/bin/php" su PHP?
risposta
chiamare lo script utilizzando il comando di php
Come si può fare? Intendi per Nginx? Uso php-fpm su debian – brainsqueezer
È vero che è possibile eseguire lo script usando il comando 'php'. Tuttavia, se vuoi creare uno script eseguibile ('chmod + x yourscript.php') devi aggiungere l'hashbang (#!) Alla prima riga del tuo script. –
non c'è bisogno di avere #!/usr/bin/php
nel codice, basta eseguire lo script CLI usando php
, ad esempio php /path/to/file.php
o /usr/bin/php /path/to/file.php
.
Ma se si desidera creare uno script eseguibile che può essere eseguito dalla shell, è necessario risolvere questo problema. –
Generalmente trovo una buona idea separare la logica dalla presentazione. Quando faccio qualcosa del genere, metto il più possibile in una libreria, e poi scrivo interfacce web e cli separate per esso.
Detto questo, chiamarlo con il comando php è probabilmente una soluzione più semplice.
+1 per la separazione della logica. In genere, la CLI e il Web richiedono interfacce separate (ad esempio interagendo con '$ argv' anziché' $ _GET'). Quindi non è necessario che lo stesso * file * venga chiamato da entrambi. – ircmaxell
Ho risolto il problema utilizzando il buffering dell'output. Il mio script ora assomiglia a questo:
#!/usr/bin/php
<?php
@ob_end_clean();
...
Nota: Non c'è ?>
alla fine del file. Questa è in realtà una buona pratica quando si scrivono script PHP. Ciò impedisce che qualsiasi testo spazzatura venga stampato accidentalmente.
Nota: La documentazione PHP per ob_end_clean()
dice che:
Il buffer di uscita deve essere avviato da ob_start() con PHP_OUTPUT_HANDLER_CLEANABLE e le bandiere PHP_OUTPUT_HANDLER_REMOVABLE. In caso contrario, ob_end_clean() non funzionerà.
Sembra che ciò avvenga automaticamente quando PHP viene eseguito dalla riga di comando.
La soluzione di buffer di uscita sopra è un hack. Non farlo.
prima cosa, in realtà si sta meglio utilizza il comando env per determinare quale PHP è utilizzato:
#!/usr/bin/env php
Poi dare il permesso di essere eseguito da solo:
chmod +x myfile
Così, invece di chiamando 'php myfile', ora esegui:
./myfile
Da quella cartella. Spero che questo ti aiuti!
- 1. PHP: come evitare le funzioni di reindirizzamento?
- 2. Evitare l'esecuzione di PHP termine
- 3. Php su zend, come evitare una variabile per una query?
- 4. Come evitare di utilizzare oggetti globali PHP?
- 5. Google Charts - evitare di mostrare i valori negativi in asseY
- 6. Come posso creare un'estensione PHP su Windows?
- 7. Come mostrare popup su Emacs?
- 8. Come posso mostrare un viewbag come html?
- 9. Evitare il codice duplicato (PHP)
- 10. come posso mostrare un'icona in Lollipop Toolbar?
- 11. Come posso mostrare tre colonne per riga?
- 12. Come posso evitare di causare perdite di memoria in Firefox?
- 13. Come posso mostrare i cookie a codeigniter?
- 14. (Android) Come posso mostrare una parte dell'immagine?
- 15. Come posso evitare il bending del gradiente CSS?
- 16. Come posso evitare il furto del codice javascript?
- 17. Come posso evitare una InvalidCastException in .NET?
- 18. Come posso evitare SQL injection con ColdFusion
- 19. Come posso evitare i decimali dell'arrotondamento?
- 20. Come posso evitare l'interpolazione della stringa Ruby?
- 21. PHP - Zend dire evitare i metodi magici?
- 22. Come evitare le letture fantasma su Postgres?
- 23. Come posso mostrare direttamente un video caricato di recente?
- 24. come mostrare la posizione corrente su MKMapView
- 25. Come evitare di mostrare già autorizzato a finestra applicazione in Android Facebook SDK
- 26. Come mostrare avviso su Apple Watch
- 27. Come posso evitare l'esecuzione di OnTextChanged in EditText di Android
- 28. Impossibile mostrare errori con PHP in IIS7.5
- 29. Come mostrare la barra di scorrimento sempre su UICollectionView
- 30. come posso mostrare la somma di in una colonna datagridview?
Se usi già apache per servire PHP, configura nginx come proxy inverso per apache. – Qwerty