Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как отлаживать серверные сценарии?
 
 автор: Eugene77   (21.05.2007 в 09:38)   письмо автору
 
 

Я понимаю, для JavaScript ов никакой дебаггер не нужен. Можно любую переменную alert ом посмотреть. А как быть с серверными сценариями? Не работают втихаря. Как подступиться не знаю.
Вот несколько файлов скопировал в директорию, теперь они не нужны, надо стереть. Написал вот:

<?php
$file
=$_POST['file']; // Это имя файла, который надо стереть, оно без расширения (расширение неизвестно, да мне и не важно)
$dir =$_POST['dir'];  // Это имя директории, куда я его клал
if(!$dir_handle opendir($dir)) // Хотел бы я узнать, если ему не удалось открыть директорию, но каким способом?
while($f1 readdir($dir_handle)){
    if(
substr_count($f1,$file)) $song=$f1;
    }
$f=$dir.'/'.$song;
unlink($f);
if(!
readdir($dir_handle){  // Если директория опустела, то её тоже пора убрать.
    
closedir($dir_handle);
    
rmdir($dir);
    }
        else 
closedir($dir_handle);
?>

Но не работает чего-то может он неправильно имя файла получает или директории? Как узнать?
Подскажите!

   
 
 автор: bronenos   (21.05.2007 в 10:04)   письмо автору
 
   для: Eugene77   (21.05.2007 в 09:38)
 

здесь вместо alert используйте die с аргументом который надо вывести

   
 
 автор: Trianon   (21.05.2007 в 10:10)   письмо автору
 
   для: Eugene77   (21.05.2007 в 09:38)
 

В общем случае - точно также, как Вы постпаете с JS-кодом. Только вместо alert будет echo.

В Вашем примере:

<?php 
$file
=$_POST['file']; // Это имя файла, который надо стереть, оно без расширения (расширение неизвестно, да мне и не важно) 
echo "\r\n<br/> Запрошенный файл: $file";
$dir =$_POST['dir'];  // Это имя директории, куда я его клал 
echo "\r\n<br/> Запрошенный каталог: $dir";
if(!
$dir_handle opendir($dir)) // Хотел бы я узнать, если ему не удалось открыть директорию, но каким способом? 
{
  
  echo 
"\r\n<br/> Открытый каталог: $dir_handle";

while(
$f1 readdir($dir_handle)){ 
    echo 
"\r\n<br/> Видим элемент: $f1";

    if(
substr_count($f1,$file)) 
    {
        
$song=$f1
        echo 
"\r\n<br/> Нашли нужное:  $song";
    } 
  }
}
$f=$dir.'/'.$song

echo 
"\r\n<br/> Удаляем файл: $f";
unlink($f); 
if(!
readdir($dir_handle){  // Если директория опустела, то её тоже пора убрать. 
    
closedir($dir_handle); 
    
rmdir($dir); 
    echo 
"\r\n<br/> Удаляем каталог: $dir";

    } 
        else 
closedir($dir_handle); 
?> 



В строке if(!$dir_handle = opendir($dir)) у Вас синтаксическая ошибка - попытка присвоить значение выражению, а не переменной.

   
 
 автор: coloboc66   (21.05.2007 в 11:05)   письмо автору
 
   для: Trianon   (21.05.2007 в 10:10)
 


if(!opendir($dir)) 
{
...
}

   
 
 автор: Trianon   (21.05.2007 в 11:54)   письмо автору
 
   для: coloboc66   (21.05.2007 в 11:05)
 

Э... не понял.
Поясните?

   
 
 автор: coloboc66   (21.05.2007 в 12:09)   письмо автору
 
   для: Trianon   (21.05.2007 в 11:54)
 

Это я вот к этому: "// Хотел бы я узнать, если ему не удалось открыть директорию, но каким способом?"

if(!opendir($dir)) 
{
echo "Не удалось открыть директорию";

   
 
 автор: Trianon   (21.05.2007 в 12:14)   письмо автору
 
   для: coloboc66   (21.05.2007 в 12:09)
 

тогда это не мне. :)

странный способ. ну да, если не удалось открыть, то мы об этом узнаем.
А если удалось - то, мало того , что результатом функции воспользоваться будет уже никак, так еще и каталог тут же закроется. Даже побочных эффектов не будет. Какой смысл было пытаться?

   
 
 автор: Eugene77   (21.05.2007 в 12:05)   письмо автору
 
   для: Trianon   (21.05.2007 в 10:10)
 

Спасибо за подробный ответ! Только я не понял куда он будет свой вывод направлять. Это же чисто серверный сценарий он не содержит абсолютно никакого html кода. Где мне потом собирать все эти строчки эхом отданые?
А вот так if(!($dir_handle = opendir($dir))) { ... нормально будет?

   
 
 автор: Trianon   (21.05.2007 в 12:11)   письмо автору
 
   для: Eugene77   (21.05.2007 в 12:05)
 

Да. Так - нормально.

В php все сценарии - чисто серверные. Запускаются через браузер. Ответ выдают в браузер.

Или Вы хотите отлаживать сценарий, вызывая его cron-ом?
Ну... можно перехватить вывод с помощью ob_start()
и записать его в файл fwrite(fopen(), ob_get_contents()); ob_end_clean()
а потом файл чем нибудь смотреть.
Только в крон лучше совать уже до упора вылизанный код

   
 
 автор: Eugene77   (21.05.2007 в 12:26)   письмо автору
 
   для: Trianon   (21.05.2007 в 12:11)
 

Я здесь чего-то коренным образом не понимаю.
Вот запустил...
Директория образовалась, файлы записались - это я командером проверил.
Дальше поисходит submit формы, где action="unlink.php", там весь этот код.
А дальше ... тишина. Куда мне смотреть?
Ага, понял!
Submit как раз и не работает
Всем спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования