Last active
August 20, 2016 07:50
-
-
Save luismisanchez/d384eac93c5362914a2b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
header('Content-type: text/plain; charset=utf-8'); | |
error_reporting(E_ALL); | |
ini_set('display_errors', 1); | |
$script = basename(__FILE__); | |
$link = $_SERVER['HTTP_HOST']; | |
// Si venimos desde el botón INSTALAR WORDPRESS | |
// borramos este archivo y redirigimos al script de instalación de WordPress | |
if(isset($_POST['delete'])) { | |
//intentamos borrar el archivo | |
unlink($script); | |
//Si no ha sido posible, advertimos al usuario | |
if (file_exists($script)) { | |
header('Content-Type: text/html; charset=utf-8'); | |
echo "<p>El fichero <strong>".$script."</strong> no ha podido ser eliminado. Accede por FTP y eliminalo manualmente."; | |
echo "</p><p>Una vez eliminado puedes volver a pulsar el botón para continuar con la instalación.</p>"; | |
echo '<form method="post">'; | |
echo '<input name="submit" type="submit" value="INSTALAR WORDPRESS"/>'; | |
echo '<input name="delete" type="hidden" value="delete"/>'; | |
echo '</form>'; | |
} else { | |
// Si se ha borrado correctament, redirigimos a instalación de WordPress | |
header('Location: http://'.$link); | |
} | |
} else { | |
header('Content-Type: text/html; charset=utf-8'); | |
// Definimos algunas variables y descargamos última versión de WordPress | |
// Copia en la variable $url el enlace de la versión que quieres descargar | |
// desde http://es.wordpress.org/releases/ | |
$url = 'https://wordpress.org/latest.zip'; | |
echo "<p>Descargando archivo: ".$url."</p>"; | |
flush(); | |
sleep(1); | |
$md5 = file_get_contents($url.".md5"); | |
$file = "wordpress.zip"; | |
$src = fopen($url, 'r'); | |
$dest = fopen($file, 'w'); | |
echo stream_copy_to_stream($src, $dest) . " bytes descargados. Descarga correcta.\n"; | |
echo "<p>Comprobando hashes MD5 del archivo...</p>"; | |
flush(); | |
sleep(1); | |
// Comprobamos por seguridad si el hash md5 del archivo descargado | |
// es el mismo que el publicado en la web de WordPress | |
echo '<p>Hash MD5 del archivo descargado ' . $file . ': <strong>' .md5_file($file)."</strong></p>"; | |
echo '<p>Hash MD5 de WordPress.org ' . $url . ': <strong>' . $md5."</strong></p>"; | |
if ($md5 === md5_file($file)) { | |
echo "<p>Los hash MD5 coinciden. Buena señal.</p>"; | |
echo "<p>Descomprimiendo archivo...</p>"; | |
flush(); | |
sleep(1); | |
$ruta = __DIR__; | |
$zip = new ZipArchive; | |
if ($zip->open($file) === TRUE) { | |
$zip->extractTo($ruta); | |
$zip->close(); | |
echo '<p>Archivo descomprimido correctamente.</p>'; | |
echo '<p>Moviendo archivos a la raiz y asignando permisos...</p>'; | |
flush(); | |
sleep(1); | |
} else { | |
exit("<p>El archivo de WordPress no ha podido ser descomprimido. Habrá que subirlo manualmente por FTP :(</p>"); | |
} | |
// Metemos los nombres de los archivos y directorios en un array | |
$dir = "wordpress"; | |
$files = scandir($dir); | |
// Identificamos los directorios | |
$source = "/wordpress/"; | |
// Movemos los archivos y directorios a la ruta desde la que estamos | |
// ejecutando el script | |
foreach ($files as $file) { | |
if (in_array($file, array(".",".."))) continue; | |
rename ($ruta.$source.$file, $ruta."/".$file); | |
} | |
// Eliminamos el directorio wordpress creado al descomprimir el archivo | |
// y el propio archivo wordpress.zip | |
rmdir("wordpress"); | |
unlink("wordpress.zip"); | |
// Asignamos permisos correctos a archivos y directorios | |
exec ("find ".$ruta." -type f -exec chmod 0644 {} +"); | |
exec ("find ".$ruta." -type d -exec chmod 0755 {} +"); | |
// Mostramos un botón que elimine el archivo de instalación | |
// y nos lleve al instalador de WordPress | |
echo "<p>Todo ha ido bien. Para hacer limpieza y comenzar la instalación de WordPress pulsa el siguiente botón:</p>"; | |
echo '<form method="post">'; | |
echo '<input name="submit" type="submit" value="INSTALAR WORDPRESS"/>'; | |
echo '<input name="delete" type="hidden" value="delete"/>'; | |
echo '</form>'; | |
echo 'Al pulsar el botón se eliminará este archivo <strong>('.$script.')</strong>. De todos modos y por seguridad, es <strong>MUY IMPORTANTE</strong> que compruebes mediante FTP que el archivo ha sido eliminado correctamente.'; | |
} else { | |
// Si los HASH no coinciden algo ha ido realmente mal | |
exit("<p>OJO! Los hash MD5 no coinciden!</p>"); | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment