Ошибка отображается, даже если каталог уже существует - PullRequest
0 голосов
/ 25 марта 2012

Я делаю менеджер по работе с клиентами в интрасети на PHP.Для каждого покупателя создается каталог для магазина, в который можно добавлять файлы.Предполагается, что мой скрипт должен делать, если каталог не существует, создать его, если он существует, не создавать его.Что на самом деле происходит, если каталог уже существует, я получаю следующую ошибку:

Warning: mkdir() [function.mkdir]: File exists in     C:\server2go\server2go\htdocs\customermgr\administrator\components\com_chronoforms\form_actions\custo    m_code\custom_code.php(18) : eval()'d code on line 14

Итак, что происходит, он все равно пытается создать его, даже если оператор if должен его остановить?на что я делаю не так: -S.

    <?php
    $customerID = $_GET['cfid'];
    $directory = "/customer-files/$customerID";

    if(file_exists($directory) && is_dir($directory)) { 
    }
    else {


    $thisdir = getcwd(); 


    mkdir($thisdir ."/customer-files/$customerID" , 0777); }

    ?>

Ответы [ 3 ]

1 голос
/ 25 марта 2012

Просто взглянул коротко, но я бы попробовал это:

$directory = $thisdir . "/customer-files/$customerID";

и удалить $ thisdir из mkdir ();

, также вы должны переместить ваш $ thisdir перед объявлением $ directory

1 голос
/ 25 марта 2012

Функция file_exists () не использует относительные пути, где is_dir () может.Поэтому вместо этого используйте общий знаменатель и передайте абсолютный путь к этим функциям.Кроме того, вы можете переместить вызов на getcwd() в назначение $directory и повторно использовать $directory позже для создания каталога.

<?php

   $customerID = $_GET['cfid'];

   // Get full path to directory
   $directory = getcwd() . "/customer-files/$customerID";

    if(file_exists($directory) && is_dir($directory)) { 
       // Do nothing
    }
    else { 
       // Directory doesn't exist, make it
       mkdir($directory , 0777); }
    }

?>
1 голос
/ 25 марта 2012

Заменить:

if(file_exists($directory) && is_dir($directory)) {

с:

$thisdir = getcwd();
if(file_exists($thisdir.$directory) && is_dir($thisdir.$directory)) {

или лучше:

* * 1010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...