Проблема с функциями RAR

apustilnic

Новичок
Проблема с функциями RAR

Доброго времени суток!

У меня стоит PHP 5.2.0
Скачал экстеншен php_rar.dll такой же версии. ($Revision: 1.18 $)
Раскоментировал его в php.ini
Рестартонул, после сего phpinfo выдает наличие rar, т.е. все ok

Однако простой скрипт Код (php):

PHP:
$rar_file = rar_open("example.rar") or die("Невозможно открыть архив");

$entries = rar_list($rar_file);

foreach ($entries as $entry) {
    echo 'Файл: ' . $entry->getName() . "\n";
    echo 'Размер сжатого элемента: ' . $entry->getPackedSize() . "\n";
    echo 'Размер в распакованном состоянии: ' . $entry->getUnpackedSize() . "\n";

    $entry->extract('/dir/extract/to/');
}

rar_close($rar_file);
Ругается:
Warning: rar_open() [function.rar-open]: failed to open example.rar in D:\Webservers\home\test\www\test2.php on line 6

Файл example.rar там же где и скрипт. Я его создал WinRAR-ом.
Причем ф-ция
PHP:
  $rar_file=fopen("example.rar", "r");
его открывает.

Подскажите, плз, где ошибка.
Спасибо!
 

Wicked

Новичок
вроде все делаешь правильно...
так что догадки такие: м.б. версии несовместимы, м.б.php_rar.dll плохо работает с какими-нибудь типами архивов, например solid, м.б. архив поломан, м.б. это вообще не архив, ... :)

tony2001
в примере в мане - путь относительный.
 

apustilnic

Новичок
Действительно, забыл.

Указал: rar_open($_SERVER['DOCUMENT_ROOT']."/example.rar")

и все заработало.

tony2001:
Спасибо!
 

iceman

говнокодер
а ты пробовал указать полный путь?
ведь file() это не rar_open()

-~{}~ 05.07.07 15:28:

пока покурил уже ответили +)
 

tony2001

TeaM PHPClub
Wicked

относительный путь работает прекрасно в большинстве случаев.

просто в многопоточном варианте PHP не делает chdir(<директория скрипта>), а только "эмулирует", т.к. один поток делающий chdir() меняет cwd для всех.
сам PHP, конечно, об этом знает и использует записанный (as in "у меня все ходы записаны!") cwd, поэтому fopen() работает.

но библиотека unrar вообще не в курсе и ищет не в текущей директории скрипта, а в текущей директории процесса и по понятным причинам не находит.
естественно, это касается всех сторонних библиотек, не только unrar.

отсюда вывод - по возможности всегда и везде указывайте абсолютный путь.
 

Wicked

Новичок
tony2001
спасибо за объяснения.

А что за многопоточный вариант использования пхп?
 

tony2001

TeaM PHPClub
threadsafe? multithreaded? ZTS?
многопоточный вебсервер?

я не знаю как это объяснить в двух словах..
 

Wicked

Новичок
tony2001
спасибо, попробую разобраться :) Хотя так вот, будучи не в теме, не могу в гугле отделить результаты по теме от мусора...
 
Сверху