PHP de desenlace O reescribir archivo propio / corriente por sí mismo
Pregunta
Tarea:. Cortar o borrar un archivo después de la primera recorrido
Tengo un archivo de instalación llamado "index.php", que crea otro archivo PHP.
<?
/* here some code*/
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "<?php \n
echo 'hallo, *very very long text*'; \n
?>";
fwrite($fh, $stringData);
/*herecut"/
/*here some code */
después de la creación del nuevo archivo de este archivo se llama y yo la intención de borrar el filecreation llamada ya que se necesita mucho tiempo y sólo en la primera instalación.
i para ello añadir al código anterior
echo 'hallo, *very very long text*'; \n
***$new= file_get_contents('index.php'); \n
$findme = 'habanot';
$pos = strpos($new, $findme);
if ($pos === false) {
$marker='herecut';\n
$new=strstr($new,$marker);\n
$new='<?php \n /*habanot*/\n'.$new;\n
$fh = fopen('index.php', 'w') or die 'cant open file');
$stringData = $new;
fwrite($fh, $stringData);
fclose($fh);***
?>";
fwrite($fh, $stringData);]}
¿No es que hay una manera más fácil o una función para modificar el archivo actual o incluso "auto destruir" un archivo después de la primera llamada?
Regards
EDIT: encontrado el modo de edición, lo siento a zaf
unlink(__FILE__);
se puede utilizar para eliminar el archivo "ayudante" después de la ejecución.
Solución
unlink(__FILE__);
para el archivo de "ayudante" parece necesario, ya que no puedo encontrar una manera de modificar el archivo PHP inuse / proceso.
Otros consejos
La mayoría de los sitios PHP auto-instalación utilizan una install.php para realizar la puesta a punto inicial. Cuando la instalación se verifica y se le redirige a removeinstall.php que exigiría unlink () en cada archivo de instalación en ellas borrar todo lo alto.
Esto deja detrás de la removeinstall.php, pero tiene la ventaja de no contaminar ninguna de las "código en vivo" con código de eliminación instalación.
removeinstall.php simplemente contendría las declaraciones desvincular ...
if (file_exists('install.php')) {
unlink('install.php');
}
Si no desea dejar atrás el removeinstall.php, usted podría tener una llamada condicional en un archivo diferente ... por ejemplo index.php? Removeinstallation = 1 o similar.