Probleme instruction php move_uploade sur VPS SSD OVH
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
question

Probleme instruction php move_uploade sur VPS SSD OVH

Par
FRANCKT
Créé le 2016-10-31 06:49:06 (edited on 2024-09-04 13:44:01) dans Serveurs Privés Virtuels (VPS)


Bonjour à tous et merci pour votre temps.

J'ai un serveur dédié depuis peu chez OVH et j'ai installé CENTOS 7 que j'utilise en interne sur un de mes serveurs. (c'est pompeux, je sais .... ).

La fonction upload (PHP4 & 5) "move_uploaded_file" fonctionne très bien en interne sous linux (PHP5) et sous easyphp 1.8 (PHP4).

J'ai contrôlé avant de vous demander avis les droits sur le sous sous dossier de mon arborescence (archive) : var/www/html/sitetoto/archive

Et pour test 0777 (utilisateur / groupe / autre) sur ce dossier archive
Utilisateur apache Groupe apache

Redémarrage serveur apache après modification des droits (test 0700; 0750 ...).

Et à chaque fois :

Impossible d'enregistrer le fichier !

TYPE DE SERVEUR VIRTUELLE OVH
OVH SSD (premier prix pour test avant déploiement de plusieurs serveurs ....)
CENTOS 7 64 BITS
Apache 2.4.6 (CentOS)
PHP 5.4.16
MariaDB Server 5.5.52

Le code :

session_start();

include ("controle1.php");
$nom = $_SESSION['nomuser'];
$pren = $_SESSION['prenuser'];

$numuser = $_SESSION['numusers'];
$auto = $_SESSION['auto'];
$sesid = session_id();

require ("datesyst.php");
require ("connect.php");



$connexion = mysql_connect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE, $connexion);

$nu = $numuser;


IF (isset($_POST['idpro'])) // modif20160328
{
$idpro = $_POST['idpro'];
}
ELSE IF (isset($_GET['idpro']))
{
$idpro = $_GET['idpro'];
}
ELSE
{
$idpro = "";
}

IF (isset($_POST['descri'])) // modif20160328
{
// echo 'le champ est bien rempli';
$descri = $_POST['descri'];
}
ELSE IF (isset($_GET['descri']))
{
$descri = $_GET['descri'];
}
ELSE
{
$descri = "";
}

$nomfile = "D".$nu.$timestamp.".pdf";


$descri = strtoupper($descri);
$descri = addslashes($descri); // stripslashes()

$descri = trim($descri);



if( isset($_POST['upload']) ) // si formulaire soumis
{

$content_dir = 'uploadZdoc/'; // dossier où sera déplacé le fichier

$tmp_file = $_FILES['fichier']['tmp_name'];

if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}

// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];

if( !strstr($type_file, 'pdf'))
{
exit("Le fichier n'est pas un fichier pdf");
}

$namefile = $_FILES['fichier']['name']; // nom de fichier original
$name_file = $nomfile; // nom du fichier sur le serveur

$insged = "INSERT INTO `ged` ( `ne-ged` , `nu-ged` , `idprofil-ged` , `descri-ged` , `nfic1-ged` , `nfic2-ged` , `date-ged` , `time-ged` ) VALUES (NULL , '$nu', '$idpro', '$descri', '$namefile', '$name_file', '$date6xbdd', '$time10')";
if ( ! ($temresged=mysql_query ($insged, $connexion) ) )
{
echo ( sprintf ("Erreur à l'execution de la requete :
%s ", $insged ) );
echo ( sprintf (" Erreur %d :
%s" , mysql_errno(),
mysql_error() ) );
exit;
}

# AVEC SECURITE SUR LE NOM DE FICHIER ANTI HACKING.

if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
{
exit("Nom de fichier non valide");
}
else if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}


echo "Le fichier a bien été uploadé";
require "retauto1.php";
}
?>

Merci à vous.


2 réponses ( Latest reply on 2024-09-04 14:24:56 Par
FRANCKT
)

Bonjour,

C'est pas le bon forum car il ne s'agit pas d'un problème de container (hébergement Maratohn). La section "Cloud" correspond surement mieux.
Le code est vraiment difficile à lire, idéalement il faudrait le mettre sur un gist par exemple pour que l'on puisse le lire.

Bonjour,
je vous remercie. Est il possible de faire le transfert directement dans la section cloud ?

De plus, ce code fonctionne fonctionne sur plusieurs serveurs et je pense (sans doute à tort) que le problème vient d'une spécificité du VPS SSD...

Merci à vous.

Bonsoir,

Sinon que disent les logs apache/php?

Bonsoir,

je vous remercie. J'ai trouvé le probleme et rien à voir avec le VPS SSD.
Le "problème" vient de SELINUX ....

J'ai désactivé SELINUX.

# /usr/sbin/setenforce 0

Celui-ci doit pouvoir se paramétrer pour régler les droits d'une manière fine mais pas vraiment le temps.

J'ai évidemment remis les droits sur le dossier d'upload à 0750.

Il faudra que je modifie la configuration de SELINUX si redémarrage du serveur :

/etc/selinux/config

et

SELINUX=disabled

Je vous remercie pour votre aide.

Sincères salutations.

Franck

Les réponses sont actuellement désactivées pour cette question.