2016-04-28 1 views
1

J'ai un répertoire users et un répertoire enfant pour le système de connexion/enregistrement. J'ai un fichier, testing.php, pour essayer de comprendre comment créer un répertoire dans le répertoire users ET créer un fichier PHP dans ce même répertoire. Voici mon code:Avoir un problème avec la fonction php fopen()

<?php 

$directoryname = "SomeDirectory"; 
$directory = "../" . $directoryname; 

mkdir($directory); 

$file = "../" . "ActivationFile"; 

fopen("$file", "w"); 

?> 

Je suis en mesure d'obtenir mdkir($directory) pour travailler, mais pas le fopen("$file", "w").

+0

Avez-vous essayé 'fopen ($ file," w ");'? – rafaelcpalmeida

+0

@rafaelcpalmeida C'est dans le code que j'ai posté ci-dessus. Il n'a pas créé le fichier. –

+0

Est-ce que 'fopen' renvoie un handle du tout? Je remarque que vous n'avez aucune extension de fichier sur le nom de fichier. – DevDonkey

Répondre

1

Vous pouvez utiliser la fonction touch() pour créer un fichier:

Si le fichier n'existe pas, il sera créé.

Vous avez également oublié de réutiliser $directory lors de la spécification du chemin de fichier, de sorte que le fichier n'a pas été créé dans le nouveau répertoire.

Tel que rapporté par Fred -ii- dans un commentaire, le rapport d'erreur doit également être activé. Voici le code avec ces changements:

<?php 

// Enable error output, source: http://php.net/manual/en/function.error-reporting.php#85096 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 

$directoryname = "SomeDirectory"; 
$directory = "../" . $directoryname; 

mkdir($directory); 

$file = $directory . "/ActivationFile"; 

touch($file); 
+1

Votre solution a parfaitement fonctionné! Je comprends enfin comment faire quelque chose comme ça, merci! –

-2

essayez ceci:

$dirname = $_POST["DirectoryName"]; 

$filename = "/folder/{$dirname}/"; 


if (file_exists($filename)) { 
    echo "The directory {$dirname} exists"; 
} else { 
    mkdir("folder/{$dirname}", 0777); 
    echo "The directory {$dirname} was successfully created."; 
} 
+1

Pourquoi l'OP "essayer ceci"? Une *** bonne réponse *** aura toujours une explication de ce qui a été fait et pourquoi cela a été fait d'une telle manière, non seulement pour le PO mais pour les futurs visiteurs de SO. –

2

Essayez ceci, cela devrait normalement résoudre votre problème.
PHP offre certaines fonctions pour manipuler le dossier & path, il est recommandé de les utiliser. Par exemple pour obtenir le dossier parent actuel, vous pouvez utiliser dirname function.

$directoryname = dirname(dirname(__FILE__)) . "/SomeDirectory"; 

if (!is_dir($directoryname)) { 
    mkdir($directoryname); 
} 

$file = "ActivationFile"; 
$handle = fopen($directoryname . '/' . $file, "w"); 
fputs($handle, 'Your data'); 
fclose($handle); 

Cette ligne est équivalente à "../SomeDirectory"

dirname(dirname(__FILE__)) . "/SomeDirectory"; 

Ainsi, lorsque vous ouvrez le fichier, vous ouvrez "../SomeDirectory/ActivationFile"

fopen($directoryname . '/' . $file, "w"); 
+1

Cela a résolu mon deuxième numéro. Merci pour l'aide! –