création de fichier sur serveur distant

foj
Petit nouveau ! | 4 Messages

18 déc. 2011, 22:24

Bonjour,

J'ai une question concernant la création de fichier en PHP. Je suis en train de faire la partie admin d'un site, et pour cela depuis mes pages administrateurs je crée des fichiers qui seront des pages du site. Cela fonctionne mais sur mon serveur les pages sont crées par l'utilisateur Apache et ne sont pas accessible depuis l'exterieur, ce qui m'ennuie fortement.

Image

Pour créer la page j'utilise la fonction fwrite.

Comment puis-je faire pour la rendre accessible de puis le web ? dois-je m'y prendre autrement pour la créer ou dois-je modifier quelque chose sur le serveur?

Merci d'avance pour vos réponce.
Modifié en dernier par foj le 18 déc. 2011, 23:00, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 déc. 2011, 22:38

salut,

si apache créer le fichier il doit pouvoir le lire, vérifie le chmod.

Comment fait tu exactement ?

@+
Il en faut peu pour être heureux ......

foj
Petit nouveau ! | 4 Messages

18 déc. 2011, 23:01

J'ai mis les droits en lecture écriture (0777).

Ma fonction est celle ci-dessous.

Code : Tout sélectionner

function creerFichier($fichierChemin, $fichierNom, $droit="", $type, $id, $fichierBase){ $fichierExtension="php"; $cheminDossier=$_SERVER["DOCUMENT_ROOT"].$fichierChemin."/"; $fichierCheminComplet = $cheminDossier.$fichierNom; if($fichierExtension!=""){ $fichierCheminComplet = $fichierCheminComplet.".".$fichierExtension; } if (!$fp1 = fopen($cheminDossier.$fichierBase, "r")) { echo "Echec de l'ouverture du fichier"; return false; exit; } else { while (!feof($fp1)) { //on parcourt toutes les lignes $pageContenu .= fgets($fp1, 4096); // lecture du contenu de la ligne } fclose($fp1); } $fichierContenu = "<?php $"."id='".$id."'; \n $"."type='".$type."'; ?> \n ".$pageContenu; // création du fichier sur le serveur $leFichier = fopen($fichierCheminComplet, "wb"); fwrite($leFichier,$fichierContenu); fclose($leFichier); // la permission if($droit==""){ $droit="0777"; } // on vérifie que le fichier a bien été créé $t_infoCreation['fichierCreer'] = false; if(file_exists($fichierCheminComplet)==true){ $t_infoCreation['fichierCreer'] = true; } // on applique les permission au fichier créé $retour = chmod($fichierCheminComplet,intval($droit,8)); $t_infoCreation['permissionAppliquer'] = $retour; return $t_infoCreation; }

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

19 déc. 2011, 00:02

tu a un message d'erreur ?

@+
Il en faut peu pour être heureux ......

foj
Petit nouveau ! | 4 Messages

19 déc. 2011, 22:18

Oui j'ai cela

Warning: require_once(Connections/db_conn.php) [function.require-once]: failed to open stream: Operation not permitted in /home/httpd/vhosts/fojwideweb.ch/httpdocs/contenu_admin/test.php on line 4

Fatal error: require_once() [function.require]: Failed opening required 'Connections/db_conn.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/httpd/vhosts/fojwideweb.ch/httpdocs/contenu_admin/test.php on line 4

Si je charge la même page depuis fileZila (donc avec mon accès utilisateur) je peux lire parfaitement la page.

Merci pour votre aide

ViPHP
ViPHP | 1996 Messages

21 déc. 2011, 00:34

Est ce que le dossier 'Connections/' est dans le dossier httpdocs ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

foj
Petit nouveau ! | 4 Messages

21 déc. 2011, 21:22

Oui il l'est. De plus, si je télécharge la page et que je la retransferts depuis fileZila avec mon loggin cela fonctionne trés bien. Le problème est seulement si la page est avec l'utilisateur Apache (voir l'image du premier post)... Mais je comprends pas pourquoi!?!?

ViPHP
ViPHP | 1996 Messages

22 déc. 2011, 00:12

apache a-t-il les droits sur le dossier aussi ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr