Класс "PharData" не найден - PullRequest
       31

Класс "PharData" не найден

1 голос
/ 21 октября 2011

Я получаю эту ошибку на моем производственном сервере (CentOS 5.4 и php 5.3.5):

Предупреждение: include_once (PharData.php): не удалось открыть поток: нет такого файл или каталог в /var/www/ZendFramework/library/Zend/Loader.php на линия 146

Предупреждение: include_once (): не удалось открыть PharData.php для включения (Include_path = '/ вар / WWW / ФВ: / Var / WWW / VMMS: / Var / WWW / ZendFw / библиотека:.: / USR / доли / груша: / USR / доли / PHP') в /var/www/ZendFw/library/Zend/Loader.php в строке 146

Неустранимая ошибка: класс «PharData» не найден в /var/www/vm/app/Backup.php в строке 40

А это код, который не работает:

$phar = new PharData($imageBackupFile);
$phar->buildFromDirectory($imageDir);
Logger::info("Image directory backed up to: $imageBackupFile");

Этот код отлично работает на моем собственном компьютере.

PharData должен быть включен по умолчанию в php 5.3+ ...

Спасибо за вашу помощь!


ОБНОВЛЕНИЕ:

Я использую функцию автозагрузчика Zend для загрузки хороших файлов php, используя этот код:

require_once("Zend/Loader/Autoloader.php");
$autoloader = Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);

Zend автозагрузчик делает include_once(PharData.php).

1 Ответ

3 голосов
/ 21 октября 2011

То, что Phar по умолчанию включен в PHP 5.3, не означает, что он обязательно включен в вашу установку.Когда вы создаете PHP с ./configure, вы можете передать --disable-phar, чтобы отключить расширение Phar.

Чтобы подтвердить это, запустите следующий скрипт:

<?php
  phpinfo();
?>

Один из первыхпоявившиеся разделы будут разделом Configure Command.Просмотрите этот раздел, чтобы увидеть, присутствует ли переключатель --disable-phar и есть ли раздел Phar на странице в целом.

Если его нет, вам нужно связаться с вашим хостом, чтобы включить его.Однако есть неплохой шанс, что они не сделают этого за вас, поскольку это может повлиять на других пользователей в зависимости от того, как настроены их серверы.Если это на вашей собственной машине, вам нужно либо пересобрать PHP без этого ключа, либо установить Phar вручную из PECL (не знаю, будет ли это работать в 5.3, но я не понимаю, почему это не будет).

...