Grazie per l'attenzione...
Allora, forse i problemi sono due , scusa se sarò un po' lungo:
Primo problema, legato al safe mode:
Se hai uno script che crea una cartella, questa cartella avrà l'UID del server (nel mio caso 48) e, siccome lo script ha l'UID dell'utente (nel mio caso 175639), non potrà utilizzarla! Per risolvere qs problema basta che la cartella venga creata da ftp o dal pannello, in modo che anch'essa abbia l'UID utente... ma capisci che le applicazioni che creano automaticamente le cartelle non potranno girare... a questo punto non capisco se nessuno qui ha script del genere oppure si fa in un altro modo!
Vedi a esempio il thread iniziato da un utente che non riusciva a installare simple-php-blog (http://forum.altervista.org/showthread.php?t=33553) per via proprio del safe mode... ho provato anche io: bisogna creare le cartelle via ftp o pannello e allora va. Ma appena crea nuove cartelle per archiviare i messaggi dà l'errore del safe mode!
E' chiaro che il safe mode ha un baco enorme! Permette agli script di creare le cartelle ma gli affibbia l'UID del server e diventano inutilizzabili!
Il secondo metodo per risolvere questo problema è quello escogitato da yappa-ng: carichi uno script che ti fa l'upload di un secondo script, in questo modo, sebbene il primo script ha l'UID dell'utente (visto che l'ha caricato l'utente) il secondo ha l'UID del server (non so come mai, ma è così) e quindi può operare con le cartelle appena create e tutto funziona!!!
Settimana scorsa funzionava ma oggi non più, e veniamo al...
Secondo problema, forse slegato al safe mode:
Il primo script (safe_mode_start.php) è questo:
Codice:
<html>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
1. Make source root <input type="text" name="setup_form[yappadir]" size="50" value="foto"><br>
2. Upload safe_mode_install.php: <input type=file size=50 name="fupload[install]"><br>
<br>
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input type="hidden" name="SubmittedFinal" value="true">
<input type="submit" name="submit" value="Submit">
</form>
<br><br>
<?php
// ******************************************************************
error_reporting(E_ALL);
function make_source_root($l_yappadir)
{
global $config;
/* check for the source root */
$config["source_root"] = $l_yappadir;
if (!@is_dir($config['source_root'])) {
if (!(mkdir ($config['source_root'], intval("0777", 8)))) {
// directory not created!
?>
Error: directory already created!<br>
<?php
return;
} else {
@chmod($config['source_root'], intval("0777", 8));
}
}
sleep(1);
clearstatcache();
/* check AGAIN for the source_root */
if (!@is_dir($config['source_root'])) { ?>
Error: Cannot find the directory: "<?php print $config["source_root"]; ?>" !!!<br>
<?php
return;
} else {
?>
Ok: yappa-ng main directory "<?php print $config["source_root"]; ?>" creation successful!<br>
<?php
return 1;
}
}
// ******************************************************************
function upload_needed_files()
{
global $config;
if (($_FILES['fupload']['name']['install']) && ($_FILES['fupload']['size']['install'] != "0")) {
$l_dest_filename = $_FILES['fupload']['name']['install'];
if($l_dest_filename != "safe_mode_install.php") {
// error - wrong filename!
?>
Error: Wrong filename! You should upload the file safe_mode_install.php!<br>
<?php
} else {
$dest = "safe_mode_install.php";
if (!copy($_FILES['fupload']['tmp_name']['install'], $dest)) {
// copy error!
?>
Error: Could not upload the file safe_mode_install.php!<br>
<?php
} else {
//upload ok!
$l_path = rawurlencode($config['source_root']);
?>
Ok: Upload of safe_mode_install.php successful!<br>
<?php
if (!@chmod($dest, intval("0666", 8))) {
// fehler!
}
exit();
}
}
}
}
// ******************************************************************
if (isset($_POST['SubmittedFinal'])) {
if ($_POST['SubmittedFinal']) {
$setup_form = $_POST['setup_form'];
if(isset($setup_form["yappadir"])) {
$l_yappadir = $setup_form["yappadir"];
make_source_root($l_yappadir);
upload_needed_files();
}
}
}
?>
</body>
</html>
Il secondo script (safe_mode_install.php) è questo:
Codice:
<html>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
Upload check_setup.php: <input type=file size=30 name="fupload[check]"><br>
<br>
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input type="hidden" name="SubmittedFinal" value="true">
<input type="submit" name="submit" value="Submit">
</form>
<br><br>
<?php
// ******************************************************************
error_reporting(E_ALL);
function make_needed_dirs()
{
global $config;
$dirname = "foto/images";
if (!@is_dir($dirname)) {
if (!(mkdir ($dirname, intval("0777", 8)))) {
// directory not created!
?>
Error: directory "images" not created!<br>
<?php
$return_value["check"] = 1;
return $return_value;
} else {
@chmod($dirname, intval("0777", 8));
?>
Ok: directory "images" created!<br>
<?php
}
}
}
// ******************************************************************
function upload_needed_files()
{
global $config;
if (($_FILES['fupload']['name']['check']) && ($_FILES['fupload']['size']['check'] != "0")) {
$l_dest_filename = $_FILES['fupload']['name']['check'];
if($l_dest_filename != "check_setup.php") {
// error - wrong filename!
?>
Error: Wrong filename! You should upload the file check_setup.php!<br>
<?php
} else {
$dest = "check_setup.php";
if (!copy($_FILES['fupload']['tmp_name']['check'], $dest)) {
// copy error!
?>
Error: Could not upload the file check_setup.php!<br>
<?php
} else {
//upload ok!
?>
ok: Upload of check_setup.php successful!<br>
<?php
if (!@chmod($dest, intval("0666", 8))) {
// fehler!
}
}
}
}
}
// ******************************************************************
if (isset($_POST['SubmittedFinal'])) {
if ($_POST['SubmittedFinal']) {
make_needed_dirs();
upload_needed_files();
}
}
?>
</body>
</html>
Il primo script crea la cartella "foto" e carica il secondo script.
Il secondo script crea la sottocartella "foto/images" (il primo script non lo può fare perchè, come detto, una volta create, le cartelle non sono più utilizzabili se lo script ha un UID che non è quello del server...) e cerca di caricare un terzo script (check_setup.php) ma fallisce (non so capire che tipo di errore sia...).
Questo upload funzionava e ora non funziona più e inoltre con un altro login (sempre qui su altervista) funziona!