Возникли проблемы с функцией fopen() php

У меня есть users каталог и дочерний каталог для системы входа / регистрации. У меня есть файл, testing.php, чтобы попытаться выяснить, как создать каталог в users каталог И создать файл PHP в том же каталоге. Вот мой код:

<?php

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

mkdir($directory);

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

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

?>

Я могу получить mdkir($directory) работать, но не fopen("$file", "w"),

3 ответа

Решение

Вы можете использовать функцию touch() чтобы создать файл:

Если файл не существует, он будет создан.

Вы также забыли повторно использовать $directory при указании пути к файлу, поэтому файл не был создан в новом каталоге.

Как сообщил Funk Forty Niner в комментарии, сообщение об ошибке также должно быть включено. Вот код с этими изменениями:

<?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);

Попробуйте это, это обычно решит вашу проблему.
PHP предоставляет некоторые функции для управления папками и путями, рекомендуется использовать их.
Например, чтобы получить текущую родительскую папку, вы можете использовать функцию dirname.

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

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

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

Эта строка эквивалентна "../SomeDirectory"

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

Поэтому, когда вы открываете файл, вы открываете "../SomeDirectory/ActivationFile"

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

Попробуй это:

$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.";  
}  
Другие вопросы по тегам