Aller au contenu

Fonctions php qui ne passent pas chez OVH -


gto55

Sujets conseillés

Bonjour,

JE teste un script d'upload de fichiers et certaines fonctions ne passent pas.

mkdir pour créer le dossier et unlink pour le supprimer ne passent pas chez OVH sur un server dédié, alors que chez free oui.

Est-ce que qqn saurait pourquoi?

MErci :blush:

Modifié par gto55
Lien vers le commentaire
Partager sur d’autres sites

ces fonctions, de base dans php et sur les serveurs dédiés, marchent.

Si tu n'arrives pas à les faire marcher, c'est :

- soit un problème de chmod (droits d'accès/d'écriture sur les fichiers)

- soit que le chemin que tu as renseigné n'est pas le bon.

- soit que la facon dont tu as créé ton programme ne permet pas à ces fonctions de se mettre en place.

Mais dans tous les cas, si elles sont bien renseignées, elles marchent ;)

Lien vers le commentaire
Partager sur d’autres sites

Merci pour cette réponse rapide ! :P

une partie du code pour créer le path du dossier images

$time = addslashes($_POST['time']);  echo 'time: '.$time.'<br /><br />';
$categorie = addslashes($_POST['categorie']);
$queryNomCategorie = " SELECT * FROM galerie_categorie WHERE galerie_categorie.id=$categorie";
$resultNomCategorie = mysql_query($queryNomCategorie, $link);
$rowNomCategorie = mysql_fetch_array($resultNomCategorie);
$dossierPreview = '../../images/galerie/';
$pathPreviewCategorie = $dossierPreview.$rowNomCategorie["nom"];
$date = '/'.$time;
$pathPreviewTime = $pathPreviewCategorie.$date;
$dossierPreviewImage = '/images/';
$pathPreviewImage = $pathPreviewTime.$dossierPreviewImage;
echo $pathPreviewImage;
if (!is_dir($pathPreviewCategorie))
mkdir($pathPreviewCategorie,0777);
chmod($pathPreviewCategorie, 0777);
if (!is_dir($pathPreviewTime))
mkdir($pathPreviewTime,0777);
chmod($pathPreviewCategorie, 0777);
if (!is_dir($pathPreviewImage))
mkdir($pathPreviewImage,0777);
chmod($pathPreviewCategorie, 0777);

J'ai rajouté la fonction chmod($poath,0777) en plus de mkdir($path; 0777), ça marche

une partie du code qui dezippe le .zip des images et supprime à la fin le .zip

<?php
$galerie = 'images.zip';
$idGalerie = $_GET["idGalerie"];
$queryGalerie = "SELECT * FROM galerie_categorie , galerie, galerie_description WHERE galerie.id=$idGalerie AND galerie.id=galerie_description.id_galerie AND galerie_description.langue=1 AND galerie.id_categorie=galerie_categorie.id";
$resultGalerie= mysql_query($queryGalerie, $link);
$rowGalerie = mysql_fetch_array($resultGalerie);
$date = $rowGalerie["dateGalerie"];
$time = ereg_replace("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2})[0-9]{2})[0-9]{2})","\\1\\2\\3\\4\\5\\6",$date);
$dossierPreview = '../../images/galerie/';
$pathPreviewCategorie = $dossierPreview.$rowGalerie["nom"];
$dossier = '/'.$time;
$pathPreviewTime = $pathPreviewCategorie.$dossier;
$dossierPreviewImage = '/images/';
$pathPreviewImage = $pathPreviewTime.$dossierPreviewImage;
// GET DIRECTORY LISTING SORTED BY LAST MODIFIED
$dir = $upload_folder;
$filelist=array();
_AT_include('pclzip.lib.php');
if (class_exists("PclZip")) {
$directory_zip = opendir($pathPreviewImage);

while ($file_name = readdir($directory_zip)) {
$ext = strtolower(substr($galerie ,-4));
if ($ext == ".zip") {
$archive = new PclZip($pathPreviewImage . $galerie);
if (@$archive -> extract(PCLZIP_OPT_PATH,$pathPreviewImage) == TRUE) {
unlink($pathPreviewImage.$galerie);
chmod($pathPreviewImage , 0777);
}
}
}
closedir ($directory_zip);
}

$directory = opendir($pathPreviewImage);
while ($galerie = readdir($directory)) {
$ext = strtolower(substr($galerie,-4));
if ($ext == ".jpg" OR $ext == "jpeg" OR $ext == ".gif" OR $ext == ".png" OR $ext == ".bmp" OR $ext == ".tif" OR $ext == "tiff" OR $ext == ".psd") {

if (($galerie !=".") && ($galerie != "..") && (strtoupper($galerie) != ".HTPASSWD") && (strtoupper($galerie) != ".HTACCESS"))
{
$fileinfo = fopen ($pathPreviewImage . $galerie,"rb");
$stat = fstat($fileinfo);
$date = $stat[9];
$size = $stat[7];
if ($size!="") {
// means don't show folders
$filelist[] = array("filename" => $galerie, "date" => $date, "size" => $size);
}
fclose($fileinfo);
}
}
}
//ksort($filelist);
closedir ($directory);



?>

Cette partie ne marche pas alors que sur free oui, un fichier de 25mo est dézippé en qq secondes.

Lien vers le commentaire
Partager sur d’autres sites

Sur un serveur dédié OVH, à moins que tu n'aies installé suphp et tourne php en cgi, celui-ci tourne en module Apache.

C'est à dire sous l'identifiant nobody.

Il faut donc pour que tu puisses télécharger un fichier ou créer un répertoire que le répertoire parent ait les permissions adéquates pour que "nobody" puisse créer un fichier ou sous-répertoire. Ce sera le plus souvent un mode 777 ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

La librairie pour dézipper le fichier vient de http://www.phpconcept.net/#10_03_2006 .

Le script devrait dézipper les fichiers puis supprimer le .zip, mais sur OVH, ni dezip ni delete.

J'ai essayé de remplacer les unlink($repertoire); par:

exec("rm -rf $repertoire"); ou exec("rmdir /s /q $repertoire");

pas de delete sur OVH

Que faudrait-il modifier ?

Merci :)

Merci pour vos réponse ! :wow::groupwave::wow:

Sur un serveur dédié OVH, à moins que tu n'aies installé suphp et tourne php en cgi, celui-ci tourne en module Apache.

C'est à dire sous l'identifiant nobody.

Il faut donc pour que tu puisses télécharger un fichier ou créer un répertoire que le répertoire parent ait les permissions adéquates pour que "nobody" puisse créer un fichier ou sous-répertoire. Ce sera le plus souvent un mode 777 ;)

Dan

J'ai pourtant mis le chmod en 0777, ça ne passe pas alors que sur free oui, pour créer un dossier sur le server, je suis passé par les fonctions ftp.

Sur quel OS tourne les servers qui hébergent les pagent de free?

Est-ce qu'il faudrait demander à OVH de passer sur cet OS, car ttes les fonctions que je lancent avec php marchent très bien sur free et pas sur OVH.

Merci :)

Lien vers le commentaire
Partager sur d’autres sites

Sur quel OS tourne les servers qui hébergent les pagent de free?

Est-ce qu'il faudrait demander à OVH de passer sur cet OS, car ttes les fonctions que je lancent avec php marchent très bien sur free et pas sur OVH.

Pour savoir sur quel OS tournent les pages persos de Free, il suffit de demander à Netcraft: Linux avec Apache comme serveur web.

C'est-à-dire le couple OS/serveur web le plus utilisé au monde, et OVH ne t'a pas attendu pour utiliser exactement la même chose.

Donc non, ne demande pas à OVH de basculer leur hébergement sur une plateforme qu'ils utilisent déjà: ça risque d'être inutile :hypocrite:

Le problème ne vient donc certainement pas de chez eux ;)

Lien vers le commentaire
Partager sur d’autres sites

Tu ne peux pas utiliser le chmod ni le chown sur des fichiers qui ne t'appartiennent pas (ou n'appartiennent pas à l'utilisateur sous lequel tourne Apache)

Donc pas de possibilité de l'utiliser sous php, à moins que ces fichiers aient "nobody" comme propriétaire.

  • Soit tu passes tous le répertoire dans lequel tu bidouilles sous l'utilisateur nobody... avec chown -R nobody nom_du_repertoire
  • Soit tu installes suphp et tourne Apache en cgi
  • Soit tu charges une version de Linux sur laquelle suphp est installé à l'origine: Gentoo OVH par exemple.
  • Soit tu programmes différemment.

Quant à espérer que OVH change de release Linux simplement parce que ton script ne marche pas, c'est se faire des illusions et oublier les milliers (dizaines de milliers) d'utilisateurs pour qui tout va bien :)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Je pense avoir trouvé certains éléments de réponses, le server refuse de créer un dossier avec la fonction mkdir avec un chmod 0777. Puis quand on crée un dossier avec les fonction ftp mkdir, le server crée un dossier avec chmod de 0755, alors que l'on demandait de créer un chmod de 0777.

Quand on passe le dossier en chmod 0777 manuellement, le script de deZip marche.

QQn sait ce qu'il faudrait alors modifier pour obliger le server à passer ces fonctions avec un chmod 0777?

Merci !! :blush:

Modifié par gto55
Lien vers le commentaire
Partager sur d’autres sites

Qu'as-tu trouvé de plus que ce qu'on t'a annoncé dans les précédentes réponses ? Rien du tout :!:

Tu ne pourras pas forcer le serveur, sauf si tu choisis l'une des options que je t'ai présentée dans mon post de 13H56 :)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...