Возникли проблемы с функцией 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.";
}