2010-06-23 19 views
6

Cuál es la pregunta que mi compañero me dijo que no necesitaría responder, para probar mi punto eliminé php y simulé un problema de servidor. Y bueno, el servidor web sirve la fuente PHP como descarga.¿Hay alguna forma de detener la ejecución de los archivos php si el procesador php está fuera de línea?

Entonces, la pregunta es, ¿hay alguna manera de detener el suministro de la fuente en caso de falla del servidor, error o pérdida temporal de la conexión a los módulos relevantes, etc.?

+2

Además de su archivo bootstrap, sus otros archivos php deben estar fuera de la raíz del documento por esta misma razón. –

+0

+1 Ben Rowe, de hecho, es algo que estoy empezando a apreciar, ver cuánto de mi código se muestra cuando esto sucede es bastante aterrador. –

Respuesta

3

La única fuente de manera que se revela es si cambia la configuración del servidor en los errores - para Por ejemplo, estás usando un mod_php para Apache y accidentalmente eliminas el módulo.

Para este caso particular, se puede hacer esto:

<IfModule php5_module> 
    AddHandler php5-script .php 
    PHPIniDir "/etc" 
</IfModule> 
<IfModule !php5_module> 
    <FilesMatch "\.php$"> 
     Order allow,deny 
     Deny from all 
     Satisfy All 
    </FilesMatch> 
</IfModule> 
+0

Facebook filtró parte del código fuente de su página principal. Aparentemente, la razón fue que había un error en 'mod_php' bajo alta carga. http://techcrunch.com/2007/08/11/facebook-source-code-leaked/ – icktoofay

+0

@ick Bueno ... eso es un error. No hay mucho que pueda hacer al respecto excepto arreglarlo o poner un filtro (por ejemplo, otro módulo o un proxy) frente a Apache que elimine la solicitud cuando vea el código fuente (lo que sería difícil de hacer). – Artefacto

+0

@Artefacto: Sí, era un error, pero podría volver a suceder. – icktoofay

2

Coloque los archivos PHP fuera de la raíz del documento, y luego solicítelos desde los archivos PHP dentro de la raíz del documento. Ellos todavía tendrá un poco de código como este o algo, pero que no les darán muchos detalles:

require(dirname(dirname(__FILE__))."/real_file.php"); 
+0

Eso es un truco interesante. – staticsan

0

escribí un par de funciones simples para analizar una dirección URL MVC-estilo (basado en kissmvc.com) y esta es la única en php mi documento raíz:

<?php 

require '../bootstrap.php'; 
parse_request(); 

Entonces, si algo sucediera, eso es todo lo que cualquiera vería. Todo lo demás se maneja comenzando en bootstrap. Si quisiera, podría mover el parse_request() a bootstrap.php, también, pero lo hice de esta manera para poder incluir mi bootstrap y no despachar todas las cosas del sitio web si solo estuviera accionando un script cron (y esto era antes de darme cuenta de la función php_sapi_name() y constante).

Eso no sirve de nada si tienes un sitio existente con php en el docroot, o estás usando Wordpress, etc., pero si tienes la opción, evitará que este problema específico te patee a los chicos.

+0

Voy a tener que analizar eso, podría tomar algunas reescrituras de código que no me diseñé del todo, pero a largo plazo moveré todas mi código es el objetivo. –

Cuestiones relacionadas