Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2010-02-25 16:17:06

rhackert
Membre
Inscription : 2008-07-21
Site Web

Contourner le safe mode c'est possible!

bonjour,
Etant hebergé chez NFrance sur un serveur avec le safe mode sur ON, j'avais renoncé à faire passer notre blog associatif (http://www.pcf-gennevilliers.org ) en version 2. Hier en cherchant à installer une plateforme d'e-learning Moodle et confronter au meme probleme, je suis tombé sur un script ou plutot 3 petit script qui permettent de contourner ce safe mode. Je les ai adapté pour l'install de dotclear2 et ....ca marche!  Je peux enfin voir le blog. Avant je ne pouvais voir que l'interface admin mais pas le blog lui même.
j'invite donc les personnes ayant ce problème à aller jeter un oeil ici
http://ytudequetequejas.com/moodlesafem … glish.html
bon courage

Hors ligne

#2 2010-02-25 21:20:18

dwt
Membre
Inscription : 2010-02-20

Re : Contourner le safe mode c'est possible!

Bonjour,
je suis le mebre du message de dessous (ou de dessus) qui est sur NFrance - et qui n'a pas réussi à glaner une info très presonnalisée de la part de son support. Ce qui fait que j'hésitouille. Votre intervention est réconfortante et j'ai vu votre page (http://www.pcf-gennevilliers.org ) ou je découvre donc un blog bien fait. Par contre le "bon courage" de la fin provoque un petit frisson froid.    Ceci dit je vous découvre pcf et j'ai découvert mes écrits à la bibliothèque municipale de New York à la rubrique 'marxiste' - le monde est surprenant et j'en profite pour poser deux question un peu sur le fil et un peu de travers :
1) puisque vous êtes passés par les énigmes et les avez résolues - est-il de coutume que l'entraide puisse atteindre le degré que je vous laisser les clefs de mon site afin que vous montiez un blog comme vous savez le faire en échange d'une contrepartie honorable à discuter ? (ou est-ce un sujet tabou ? on peut tout imaginer)
2) est-ce que quelqu'un sait si aussi bien qu'un blog, un _forum_ comme celui sur lequel nous communiquons est montable également sur un site genre NFrance ? Quel est le degré de difficulté voire les coûts que cela engage ?

Hors ligne

#3 2010-02-26 20:50:16

rhackert
Membre
Inscription : 2008-07-21
Site Web

Re : Contourner le safe mode c'est possible!

Bonjour dwt,

Le "bon courage" de mon message ne doit pas effrayer. Les adaptations à effectuer sont des plus simples. Le principe du script est simple: il faut commencer par creer via FTP un repertoire et lui accorder les droits complets. en suite on y telecharge le dossier dotclear dezipper. et trois petit script dans lesquels il faut juste corriger le nom des repertoires . et les coordonnees FTP de son site. Que font ces scripts ? il cree un repertoire destination, inventorie tous les fichiers dotclear, puis les télécharge via HTTP de votre site pour les replacer dans un repertoire destination sur votre site !   Quel interet ? le server devient proprietaires des fichiers (proprietaire 65534) et programme peut tourner sans conflit. Pour que cela fonctionne le script lui meme devait etre propriete du serveur. Le premier script telecharge donc aussi le scripte suivant (celui qui fait vraiment le travail de telechargement) pour le recreer sur votre serveur avec le code proprietaire
Le principe est donc assez simple. rien dans ces script n'est specifique de moodle, il faut juste reperer les quelques lignes contenant des nom de repertoire et les ajuster à sa situation et évidement coller aussi ses coordonnees et login FTP. Rien de redibitoire.  Pour plus d'aide hackert(at)mnhn.fr .

Hors ligne

#4 2010-02-26 21:46:44

rhackert
Membre
Inscription : 2008-07-21
Site Web

Re : Contourner le safe mode c'est possible!

il y a 3 etapes::

// etape 1 *******************************************************************************
//****************************************************************************************
Creer un repertoire avec les droit à 777. appelons le dotclear2
dezipper localement la derniere version de dotclear.
Renommer ce repertoire "dotclearorigen" (dotclear original en espagnol)
Uploader dotclearorigen via FTP dans dotclear2


Voici le premier script php a uploader dans le repertoire dotclear2.
Nommer le par exemple dotclear_safe_moe_workaround.php . Ce script lit le fichier script_copiador.txt  à uploader aussi dans dotclear2 (voir Etape3) et le sauvegarde sous le nom script_copiador_ejecutable_DOS.php  mais avec des droits UID Apache.

<?php
//Read script_copiador.txt via HTTP, avoiding SAFE MODE restrictions with fopen...
$uri=$_SERVER["REQUEST_URI"];
$thisdir=substr($uri,0,strrpos($uri, "/"));
$uri="http://".$_SERVER["SERVER_NAME"].$thisdir."/script_copiador.txt";
$script=file_get_contents($uri);

//We save the script as "script_copiador_ejecutable_DOS.php", so Apache UID owns the file
$fp = fopen($_SERVER["DOCUMENT_ROOT"].$thisdir."/script_copiador_ejecutable_DOS.php", 'w');
fwrite($fp,$script);
fclose($fp);

//URL for the second script to be executed
$uri="http://".$_SERVER["SERVER_NAME"].$thisdir."/script_copiador_ejecutable_UNO.php";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
	<title>dotclear2 safe mode workaround</title>
</head>
 <body>
Go now to <a href="<?php echo $uri ?>"><?php echo $uri ?></a>
 </body>
</html>

//  Etape 2    *******************************************************************
//*******************************************************************************
Voici maintenant le deuxieme script: enregistrer le sous le nom espagnol script_copiador_ejecutable_UNO.php. L'execution de ce script créera un nouveau répertoire et creera deux fichiers contenant la liste complete de tous les fichier et repertoire contenu dans le repertoire "dotclearorigen". Ensuite il appelle le troisieme script script_copiador_ejecutable_DOS.php
//****************************************************************************************

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>Crear directorio</title>
 </head>
 <body><pre>
<?php

//folder (hanging from htdocs, the webroot folder) where we have put the Moodle files
$origen=$_SERVER["DOCUMENT_ROOT"]."/dotclear2/dotclearorigen";
//*************************************************************************
//Destination folder for dotclear
//REMEMBER "training" must be world-writable-folder (CHMOD 777)... at least by now.
$destino=$_SERVER["DOCUMENT_ROOT"]."/dotclear2/dotclear";
//*******************************************************************

//Make the lists of files and folders
clearstatcache();
$ficheros=listFiles($origen);
$directorios=listDirs($origen);

$fp = fopen('lista_ficheros', 'w');
foreach ($ficheros as $key => $value) {
		fwrite($fp, $value."\n");
	}	
fclose($fp);

$fp = fopen('lista_directorios', 'w');
foreach ($directorios as $key => $value) {
		fwrite($fp, $value."\n");
	}	
fclose($fp);


//Create destination folders
mkdir($destino);
mkdir($destinodata);
chmod($destino,0777);
chmod($destinodata,0777);
//It's not really necesary to make them "777" since the owner is now Apache UID 
//it's done to make easier to delete them from FTP. For safety reasons permisions should be changed to something more restrictive.

echo 'Go now to <a href="script_copiador_ejecutable_DOS.php">script_copiador_ejecutable_DOS.php</a>';

function listDirs( $from = ".")
{
    if(! is_dir($from))
        return false;
   
    $files = array();
    $dirs = array( $from);
    while( NULL !== ($dir = array_pop( $dirs)))
    {
        if( $dh = opendir($dir))
        {
            while( false !== ($file = readdir($dh)))
            {
                if( $file == "." || $file == "..")
                    continue;
                $path = $dir . "/" . $file;
                if( is_dir($path)){
                    $dirs[] = $path;
				   $files[] = $path;
					}
            }
            closedir($dh);
        }
    }
    return $files;
}

function listFiles( $from = ".")
{
    if(! is_dir($from))
        return false;
   
    $files = array();
    $dirs = array( $from);
    while( NULL !== ($dir = array_pop( $dirs)))
    {
        if( $dh = opendir($dir))
        {
            while( false !== ($file = readdir($dh)))
            {
                if( $file == "." || $file == "..")
                    continue;
                $path = $dir . "/" . $file;
                if( is_dir($path))
                    $dirs[] = $path;
                else
                    $files[] = $path;
            }
            closedir($dh);
        }
    }
    return $files;
}
?>  </pre>
 </body>
</html>

// Etape 3 *************************************************************************
//**********************************************************************************
uploader le script suivant dans dotclear2 en le nommant "script_copiador.txt"
C'est bien ecrit TXT et non PHP ! et n'oublier pas de rentrer vos login FTP a la place des champs XXXXXXXXXXX.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>Copiar ficheros</title>
 </head>
 <body><pre>
<?php
//folder (hanging from htdocs, the webroot folder) where we have put the Dotclear files
$origen=$_SERVER["DOCUMENT_ROOT"]."/dotclear2/dotclearorigen";

//Destination folder for moodle
//REMEMBER "training" must be world-writable-folder (CHMOD 777)... at least by now.
$destino=$_SERVER["DOCUMENT_ROOT"]."/dotclear2/dotclear";


//FTP access data ***********************
//***************************************
//***************************************
$servidorFTP="XXXXXXXXXXXXXXX";
$ftpuname="XXXXXXX";
$ftppass="XXXXXXX";
$ftporigendir="html/dotclear2/dotclearorigen"; //FTP FOLDER where Moodle is. Remember FTP folder, could be different of $origen

//open files lists
$ficheros=explode("\n",file_get_contents("lista_ficheros"));
$directorios=explode("\n",file_get_contents("lista_directorios"));

//Now we have a list of files with their real name...
//skip the server path and origin folder
$pos=strlen($origen);
foreach ($ficheros as $key => $value) {$ficheros[$key]=substr($value,$pos);}
foreach ($directorios as $key => $value) {$directorios[$key]=substr($value,$pos);}

//Make tree
foreach ($directorios as $key => $value) {
	echo "Creating directory $destino$value<br />";
	mkdir($destino.$value);
	chmod($destino.$value,0777);
	}

//Read files via FTP and write them in the new place (so now they are Apache UID owned)
	//Open FTP connection
	echo "Conectando via FTP<BR>";
	$conn = ftp_connect($servidorFTP);
	if (!$conn) die('ERR: Unable to connect.');
	if (!ftp_login($conn, $ftpuname, $ftppass)) die('ERR: Error en login.');

foreach ($ficheros as $key => $value) {
	echo ("-->".$origen.$value."<br />");
	if (FALSE==is_dir($origen.$value)){
			if (!file_exists($destino.$value)){
				if (ftp_get($conn,$destino.$value, $ftporigendir.$value, FTP_BINARY)) {
					echo "Copiado $ftporigendir$value<br />";
					} else {
					die("Problema al copiar $ftporigendir$value");
					}
				chmod($destino.$value,0777);
				//it's done to make easier to delete them from FTP. For safety reasons permisions should be changed to something more restrictive.
			}else{
				echo "Fichero ya existe: $value<br />";
				//comprobar tamaño. si !=, copiar
				if(filesize($destino.$value)!=filesize($origen.$value)){
					echo "Diferencia de tamaño, se vuelve a bajar $value<br />";
					if (ftp_get($conn,$destino.$value, $ftporigendir.$value, FTP_BINARY)) {
						echo "Copiado $ftporigendir$value<br />";
						} else {
						die("Problema al copiar $ftporigendir$value (de nuevo)");
						}
					chmod($destino.$value,0777);
					//it's done to make easier to delete them from FTP. For safety reasons permisions should be changed to something more restrictive.
				}
			}
		}

	}

//Close ftp connection
ftp_close($conn);
echo "Try now Moodle setup (and remember to do your homeworks)";
?>
  </pre>
 </body>
</html>

Voila le tour est joué, appeler maintenant le premier script dotclear_safe_mode_morkaround.php à partir de votre navigateur et suiver les instructions. Donner un peu de temps au serveur !

Une fois fini appeler www.votresite.com/dotclear2/dotclear/admin pour installer classiquement

ndMoe : utilisation de la balise code.

Dernière modification par Moe (2010-02-27 01:33:32)

Hors ligne

#5 2010-10-05 11:58:03

HoneyLady1989
Banni(e)
Inscription : 2010-10-05

Re : Contourner le safe mode c'est possible!

Spam

Dernière modification par Philippe (2010-10-05 12:28:35)

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map