Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Переименование файлов - не пашет на сервере :(


Автор: Jcrnd 8.12.2009, 01:11
Элементарный скрипт:

Код

function action($do)
{
  if (empty($do))
  {
    $result = 'empty var';
  }
  
  if ($do == 1)
  {
    if (rename('index.php', 'index3.php') && rename('index2.php', 'index.php'))
    {
      $result = 'locked';
    }
  }
  else if ($do == 0)
  {
    if (rename('index3.php', 'index.php') && rename('index.php', 'index2.php'))
    {
      $result = 'unlocked';
    }
  }
  
  return $result;
} 
...


Нужно тупо переименовать два файла, на денвере работает, а на сервере нет :( В чем может быть проблема? Чего может не быть на севрере? Права на файлы выставлены 666.

Автор: bars80080 8.12.2009, 01:26
ну, во-первых, следует прояснить, включен ли показ ошибок
потом, посмотреть, что за результаты возвращают функции rename
ну, и конечно разобраться с путями. видны ли эти файлы из функции

Автор: Jcrnd 8.12.2009, 02:18
да в том то и дело, что ошибок вообще не выдает(
Отображение ошибок включено из .htaccess - "php_value error_reporting 7"

сам скрипт лежит в той же директории что и файлы для переименоваия.
Когда в  $do передается "0" почему то выдает 'empty var'.

Автор: Pitlord 8.12.2009, 02:22
Цитата(Jcrnd @  8.12.2009,  02:18 Найти цитируемый пост)
да в том то и дело, что ошибок вообще не выдает

http://phpfaq.ru/debug

Цитата(Jcrnd @  8.12.2009,  02:18 Найти цитируемый пост)
Когда в  $do передается "0" почему то выдает 'empty var'. 

http://php.net/manual/en/function.empty.php

Автор: awdev 8.12.2009, 02:45
Цитата

Отображение ошибок включено из .htaccess - "php_value error_reporting 7"

Во первых это не отображение ошибок. Это всего лишь уровень регистрации ошибок.

За вывод ошибок отвечает display_errors=0|1


Во-вторых функция empty.

Читаем внимательно мануал:
Цитата

 The following things are considered to be empty:

    * "" (an empty string)
    * 0 (0 as an integer)
    * "0" (0 as a string)
    * NULL
    * FALSE
    * array() (an empty array)
    * var $var; (a variable declared, but without a value in a class)


Это означает что 0 трактуется как пустота и следовательно функция empty(0)===TRUE.


В третьих проверьте имена файлов, в денвере имя IndEx.Php == index.php что не является истинной для unix-систем.

В четвертых помимо прав на файл, нужно еще иметь права на папку, в которой это происходит. Поставьте соответствующие права и на папку.


Желаю удачи.



Автор: Jcrnd 8.12.2009, 11:34
Цитата(awdev @ 8.12.2009,  02:45)
Цитата

В четвертых помимо прав на файл, нужно еще иметь права на папку, в которой это происходит. Поставьте соответствующие права и на папку.


Спасибо! Вот где собака была зарыта))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)