Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
percherie
Inscrit le: 30 Nov 2002 Messages: 135 Localisation: Montpellier
|
Posté le: Mer Avr 27, 2005 11:22 Sujet du message: Dossier des fichiers temporaire 'open_basedir' |
|
|
J'ai un forum SMF qui est hebergé sur le serveur et depuis quelques temp l'upload d'image ne fonctionnait plus.
J'ai cru que ça venait de l'utilisation du mode CLI pour le langage PHP mais il semble que ça ne vienne pas forcement de là.
Aprés avoir pris contact avec les developer ce serait plutot suite à une modification du code qui à besoin de l'existance d'un dossier en particulier
Voici la réponse obtenu
Citation: |
Il semblerait que le nouveau code fonctionne... si ton hébergeur a ajouté le dossier des fichiers temporaires à 'open_basedir', ce qui n'est pas ton cas. Une autre solution qui s'offre à toi est de contacter ton hébergeur pour leur demander d'ajouter ce répertoire à 'open_basedir' de leur configuration de PHP. |
|
|
Revenir en haut de page |
|
|
eurower Site Admin
Inscrit le: 03 Jan 2002 Messages: 1458 Localisation: Lyon
|
Posté le: Mer Avr 27, 2005 13:12 Sujet du message: |
|
|
En effet !
Le répertoire temporaire est accessible que pour les sessions automatiquement !
Normalement il faut alors créer un répertoire temporaire sur votre compte accessible par open_basedir et:
mode CLI: il faut que le serveur apache y ai accès en écriture
mode CGI: rien à faire, il à accès à tout votre compte
Maintenant, si cela pose souci, je peux toujours ajouter un répertoire temporaire global à open_basedir ! _________________ Modérateur des forums
Président de l'association
Hébergement eurower.net
Association loi 1901 |
|
Revenir en haut de page |
|
|
percherie
Inscrit le: 30 Nov 2002 Messages: 135 Localisation: Montpellier
|
Posté le: Mer Avr 27, 2005 14:53 Sujet du message: |
|
|
Ok, donc je crée un repertoire sur mon compte mais comment doit je faire pour qu'il sois reconnu comme tel? |
|
Revenir en haut de page |
|
|
eurower Site Admin
Inscrit le: 03 Jan 2002 Messages: 1458 Localisation: Lyon
|
Posté le: Mer Avr 27, 2005 15:25 Sujet du message: |
|
|
Bah dans le script lui dire de créer dans ce répertoire !
Tout dépend de votre script !
C un upload ? Création pur d'un fichier ? etc ... _________________ Modérateur des forums
Président de l'association
Hébergement eurower.net
Association loi 1901 |
|
Revenir en haut de page |
|
|
percherie
Inscrit le: 30 Nov 2002 Messages: 135 Localisation: Montpellier
|
Posté le: Mer Avr 27, 2005 16:22 Sujet du message: |
|
|
Oula c pas un script que j'ai créer sinon j'aurrai pu le faire moi même. Je pense que le mieux c'est de faire en sorte qu'il soit accessible par defaut sans changer le script.
Par ailleur cette solution permettra à d'autre utilisateur d'utiliser ce forum et en cas de mise à jour ça permet d'eviter toute modification de code et d'eventuel trous de sécurité.
Bien sur si ça demande trops de modif sur le serveur j'aimerai avoir un lien pour avoir un peut de documentation sur cette fonction afin de modifier le code proprement |
|
Revenir en haut de page |
|
|
eurower Site Admin
Inscrit le: 03 Jan 2002 Messages: 1458 Localisation: Lyon
|
Posté le: Jeu Avr 28, 2005 01:48 Sujet du message: |
|
|
C'est possible d'avoir le bout de code qui tente d'écrire la chose qui coince ?
Histoire que je sache réellement ce que je dois faire _________________ Modérateur des forums
Président de l'association
Hébergement eurower.net
Association loi 1901 |
|
Revenir en haut de page |
|
|
percherie
Inscrit le: 30 Nov 2002 Messages: 135 Localisation: Montpellier
|
Posté le: Jeu Avr 28, 2005 18:50 Sujet du message: |
|
|
Ok je vais faire mes petite recherche dans le code avec une modification qui fonctionne afin que tu puisse voir ce qu'il faut faire.
Je pense te le poster demain tranquillement, ça t'evitera d'avoir à lire 200Ko de code, je te mettrait le strict minimum |
|
Revenir en haut de page |
|
|
percherie
Inscrit le: 30 Nov 2002 Messages: 135 Localisation: Montpellier
|
Posté le: Sam Avr 30, 2005 19:28 Sujet du message: |
|
|
Ok c'est fait, j'ai reperer la modification de code qui coince et je t'ajoute le detail de la fonction en question
ça concerne
Code: | if (!is_uploaded_file($_FILES['attachment']['tmp_name'][$n]) || !file_exists($_FILES['attachment']['tmp_name'][$n]))
fatal_lang_error('smf124'); |
Qui avant etait
Code: |
if (!is_uploaded_file($_FILES['attachment']['tmp_name'][$n]))
fatal_lang_error('smf124'); |
Voici le detail en question
Code: | // ...or attach a new file...
if (isset($_FILES['attachment']['name']) && $_FILES['attachment']['name'][0] != '')
{
isAllowedTo('post_attachment');
// If this isn't a new post, check the current attachments.
if (isset($_REQUEST['msg']))
{
$request = db_query("
SELECT COUNT(ID_ATTACH), SUM(size)
FROM {$db_prefix}attachments
WHERE ID_MSG = $_REQUEST[msg]", __FILE__, __LINE__);
list ($quantity, $total_size) = mysql_fetch_row($request);
mysql_free_result($request);
}
else
{
$quantity = 0;
$total_size = 0;
}
$attachIDs = array();
foreach ($_FILES['attachment']['tmp_name'] as $n => $dummy)
{
if ($_FILES['attachment']['name'][$n] == '')
continue;
if (!is_uploaded_file($_FILES['attachment']['tmp_name'][$n]) || !file_exists($_FILES['attachment']['tmp_name'][$n]))
fatal_lang_error('smf124');
// Remove special foreign characters from the filename.
if (empty($modSettings['attachmentEncryptFilenames']))
$_FILES['attachment']['name'][$n] = getAttachmentFilename($_FILES['attachment']['name'][$n], false, true);
// Is the file too big?
if (!empty($modSettings['attachmentSizeLimit']) && $_FILES['attachment']['size'][$n] > $modSettings['attachmentSizeLimit'] * 1024)
fatal_lang_error('smf122', false, array($modSettings['attachmentSizeLimit']));
// Have we reached the maximum number of files we are allowed?
$quantity++;
if (!empty($modSettings['attachmentNumPerPostLimit']) && $quantity > $modSettings['attachmentNumPerPostLimit'])
fatal_lang_error('attachments_limit_per_post', false, array($modSettings['attachmentNumPerPostLimit']));
// Check the total upload size for this post...
$total_size += $_FILES['attachment']['size'][$n];
if (!empty($modSettings['attachmentPostLimit']) && $total_size > $modSettings['attachmentPostLimit'] * 1024)
fatal_lang_error('smf122', false, array($modSettings['attachmentPostLimit']));
if (!empty($modSettings['attachmentCheckExtensions']))
{
if (!in_array(strtolower(substr(strrchr($_FILES['attachment']['name'][$n], '.'), 1)), explode(',', strtolower($modSettings['attachmentExtensions']))))
fatal_error($_FILES['attachment']['name'][$n] . '.<br />' . $txt['smf123'] . ' ' . $modSettings['attachmentExtensions'] . '.', false);
}
if (!empty($modSettings['attachmentDirSizeLimit']))
{
// Make sure the directory isn't full.
$dirSize = 0;
$dir = @opendir($modSettings['attachmentUploadDir']) or fatal_lang_error('smf115b');
while ($file = readdir($dir))
{
if (substr($file, 0, -1) == '.')
continue;
$dirSize += filesize($modSettings['attachmentUploadDir'] . '/' . $file);
}
closedir($dir);
// Too big! Maybe you could zip it or something...
if ($_FILES['attachment']['size'][$n] + $dirSize > $modSettings['attachmentDirSizeLimit'] * 1024)
fatal_lang_error('smf126');
}
// Find the filename, strip the dir.
$destName = basename($_FILES['attachment']['name'][$n]);
// Check if the file already exists.... (for those who do not encrypt their filenames...)
if (empty($modSettings['attachmentEncryptFilenames']))
{
// Make sure they aren't trying to upload a nasty file.
$disabledFiles = array('con', 'com1', 'com2', 'com3', 'com4', 'prn', 'aux', 'lpt1', '.htaccess', 'index.php');
if (in_array(strtolower($destName), $disabledFiles))
fatal_error($destName . '.<br />' . $txt['smf130b'] . '.');
// Check if there's another file with that name...
$request = db_query("
SELECT ID_ATTACH
FROM {$db_prefix}attachments
WHERE filename = '" . strtolower($_FILES['attachment']['name'][$n]) . "'
LIMIT 1", __FILE__, __LINE__);
if (mysql_num_rows($request) > 0)
fatal_lang_error('smf125');
mysql_free_result($request);
}
if (!is_writable($modSettings['attachmentUploadDir']))
fatal_lang_error('attachments_no_write');
db_query("
INSERT INTO {$db_prefix}attachments
(" . (!empty($_REQUEST['msg']) ? 'ID_MSG, ' : '') . "filename, size)
VALUES (" . (!empty($_REQUEST['msg']) ? $_REQUEST['msg'] . ', ' : '') . "'" . $_FILES['attachment']['name'][$n] . "', " . $_FILES['attachment']['size'][$n] . ')', __FILE__, __LINE__);
$attachID = db_insert_id();
$attachIDs[] = $attachID;
$destName = $modSettings['attachmentUploadDir'] . '/' . getAttachmentFilename($destName, $attachID, true);
if (!move_uploaded_file($_FILES['attachment']['tmp_name'][$n], $destName))
fatal_lang_error('smf124');
// Attempt to chmod it.
@chmod($destName, 0644);
}
} |
Voilà j'espère que ce n'est pas trop ardu sinon je t'enverai le reste du code si c'est incomplet |
|
Revenir en haut de page |
|
|
percherie
Inscrit le: 30 Nov 2002 Messages: 135 Localisation: Montpellier
|
Posté le: Dim Mai 08, 2005 12:16 Sujet du message: |
|
|
J'ai une solution plus precise au problème
Il suffit de definir l'adresse du dossier temporaire /temp (ou autre dossier) dans le fichier php.ini |
|
Revenir en haut de page |
|
|
eurower Site Admin
Inscrit le: 03 Jan 2002 Messages: 1458 Localisation: Lyon
|
Posté le: Dim Mai 08, 2005 12:56 Sujet du message: |
|
|
Est défini dans php.ini
upload_tmp_dir = /tmp/upload_tmp_dir
Oki, il existe plus !
Ya des dossiers qui manquent !
Bordel de m...., ya vraiment des scripts qui foutent vraiment n'importent quoi !
Je vais être plus dur ... _________________ Modérateur des forums
Président de l'association
Hébergement eurower.net
Association loi 1901 |
|
Revenir en haut de page |
|
|
percherie
Inscrit le: 30 Nov 2002 Messages: 135 Localisation: Montpellier
|
Posté le: Dim Mai 08, 2005 18:00 Sujet du message: |
|
|
Non en fait c'est pour eviter des pertes de fichiers pendant l'envoie, ça verifie l'existence du dossier temporaire avant l'envoie d'aprés ce que j'ai compris et evite que les fichiers envoyer occupe de la place sur le server sans le que le forum sans rendent compte
En gros on empeche l'occupation de place inutile |
|
Revenir en haut de page |
|
|
Altdorf
Inscrit le: 26 Mai 2004 Messages: 547 Localisation: Doubs (25)
|
Posté le: Dim Mai 08, 2005 18:54 Sujet du message: |
|
|
Vous avez fait des modifs sur le serveur cet aprèm? Parceque j'ai eu des messages d'erreur dans mon forum phpBB et plus paticulièrement dans l'album photo. J'étais pas chez moi et j'ai pas pu noter le message mais ça parlais de "TMP" et là je lis ce sujet sur Eurower donc j'en ai déduis que vous avez fait quelque chose. En tout cas mon forum remarche sans que j'ai eu le temps de faire quoi que ce soit. _________________ http://www.lanparty.fr/ |
|
Revenir en haut de page |
|
|
eurower Site Admin
Inscrit le: 03 Jan 2002 Messages: 1458 Localisation: Lyon
|
Posté le: Dim Mai 08, 2005 19:08 Sujet du message: |
|
|
Oui, enlever l'accès à /tmp car ya des scripts idiots qui supprime tout !
J'ai du le remettre ! _________________ Modérateur des forums
Président de l'association
Hébergement eurower.net
Association loi 1901 |
|
Revenir en haut de page |
|
|
Altdorf
Inscrit le: 26 Mai 2004 Messages: 547 Localisation: Doubs (25)
|
Posté le: Dim Mai 08, 2005 19:13 Sujet du message: |
|
|
Des scripts de qui?
Et ça risque de le refaire? _________________ http://www.lanparty.fr/ |
|
Revenir en haut de page |
|
|
eurower Site Admin
Inscrit le: 03 Jan 2002 Messages: 1458 Localisation: Lyon
|
Posté le: Dim Mai 08, 2005 19:46 Sujet du message: |
|
|
Surement,
déjà je dois régler ce problème de limite de vhost ! _________________ Modérateur des forums
Président de l'association
Hébergement eurower.net
Association loi 1901 |
|
Revenir en haut de page |
|
|
|