Предупреждение mkdir () сгенерировано, хотя скрипт был успешным - PullRequest
1 голос
/ 25 января 2012

Я создаю систему управления контентом, с помощью которой пользователь может динамически создавать категории и разделы через интерфейс. Он управляется PHP и MySQL - когда пользователь щелкает форму для отправки информации о пользователе в базу данных, он динамически создает каталог (если он еще не существует) и индексный файл (если он еще не существует). Кроме того, пользователь может указать конкретный файл, соответствующий создаваемому разделу, который также создается одновременно.

Я получил все, что мне нужно: каталог, индексный файл и файл раздела, но я также получаю сообщение об ошибке mkdir (). В предупреждении говорится: «Предупреждение: mkdir () [function.mkdir]: файл существует в ..» и указывается строка, в которой отображается функция mkdir. Я использую функцию file_exists (), чтобы убедиться, что каталог и индексный файл еще не существуют, однако, похоже, что он не работает. Есть идеи?

Мой код:

$dir = $category."/";

        if (file_exists($_SERVER['DOCUMENT_ROOT'].$dir)) {
            chdir($dir);

            $newFileName = $link_name.".php";
            $newFileHandle = fopen($newFileName, 'w+') or die("can't open file");
            $category = $_POST['category'];
            $category = strtoupper($category);
            fwrite($newFileHandle, implode("\r\n", $content));
            fwrite($newFileHandle, '"'.$category.'"'.';');
            fwrite($newFileHandle, implode("\r\n", $php_cat_content));
            fwrite($newFileHandle, '"'.$section_name.'"'.';');
            fwrite($newFileHandle, implode("\r\n", $php_sec_content));
            fclose($newFileHandle);
        }
        else {
            $dir = str_replace (" ", "", $category) ."/";
            mkdir($dir, 0777);
            chdir($dir);

            if (!file_exists("index.php")) {
            $index_fn = "index.php";
            $index_fh = fopen($index_fn, 'w+') or die("can't open file");
            $category = $_POST['category'];
            $category = strtoupper($category);
            fwrite($index_fh, implode("\r\n", $content));
            fwrite($index_fh, '"'.$category.'"'.';');
            fwrite($index_fh, implode("\r\n", $php_cat_content));
            fwrite($index_fh, '"'.$section_name.'"'.';');
            fwrite($index_fh, implode("\r\n", $php_sec_content));
            fclose($index_fh);
            }

            else {
            $newFileName = $link_name.".php";
            $newFileHandle = fopen($newFileName, 'w+') or die("can't open file");
            $category = $_POST['category'];
            $category = strtoupper($category);
            fwrite($newFileHandle, implode("\r\n", $content));
            fwrite($newFileHandle, '"'.$category.'"'.';');
            fwrite($newFileHandle, implode("\r\n", $php_cat_content));
            fwrite($newFileHandle, '"'.$section_name.'"'.';');
            fwrite($newFileHandle, implode("\r\n", $php_sec_content));
            fclose($newFileHandle);
            }

Ответы [ 3 ]

0 голосов
/ 25 января 2012

$_SERVER['DOCUMENT_ROOT'].$category."/" и str_replace (" ", "", $category) ."/", вы уверены, что они одинаковы?

0 голосов
/ 25 января 2012

Вам понадобится косая черта после $_SERVER['DOCUMENT_ROOT'].

if ( file_exists( $_SERVER['DOCUMENT_ROOT'] . "/" . $dir ) ) {

. Если возникнут проблемы1009 *

должно быть (я думаю)

 $dir = $_SERVER['DOCUMENT_ROOT'] . "/" . str_replace (" ", "", $category) ."/";
 mkdir($dir, 0777);
0 голосов
/ 25 января 2012

Предупреждение не останавливает выполнение скрипта.Он говорит вам, что вы пытаетесь создать каталог, который уже существует.Вам нужно использовать is_dir(), чтобы проверить, существует каталог или нет, прежде чем вы попытаетесь его создать, тогда предупреждение исчезнет.

Вы уверены, что $_SERVER['DOCUMENT_ROOT'].$dir является точным?Ниже вы создаете каталог просто , используя $dir, но перед ним ничего нет, но вы проверяете существование каталога с корнем документа в начале.

Остальная часть вашего кода работает, потому что каталог существует , его создавать не нужно.

...