Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Extension Manager не работает (http://forum.typo3.ru/showthread.php?t=6290)

Игорь Ф. 16.05.2008 10:48

Extension Manager не работает
 
Никак не могу заставить Extension Manager работать - не могу загрузить никакие extensions.

Когда я пытаюсь импортировать extension, мне выводится:
Цитата:

Error: The extension MD5 sum could not be fetched from extensions.md5. Possible reasons: network problems, allow_url_fopen is off, curl is not enabled in Install tool.
Обновляю лист зеркал, пишет:
Цитата:

The mirror list was not updated, it could not be fetched from http://repositories.typo3.org/mirrors.xml.gz. [^] Possible reasons: network problems, allow_url_fopen is off, curl is not enabled in Install tool.
Тогда я пытаюсь вручную загрузить файл с локального компьютера:
Цитата:

Warning: gzuncompress(): data error in ../typo3/mod/tools/em/class.em_terconnection.php on line 152
Extension ManagerWrong file format. No data recognized, Error: MD5 mismatch. Maybe the extension file was downloaded and saved as a text file by the browser and thereby corrupted!? (Always select "All" filetype when saving extensions)
allow_url_fopen у меня on
CURL - enabled в Install tool.
Memory_limit = 64M в php.ini

У меня Typo3 версия 4.1.5, php - 4.4.0

Что делать ума не приложу? Думал перейти на Typo3 4.2, но там вроде PHP 5 нужно.
Искал в интернете, но что-то ни один рецепт мне не подошел. Перейти на другой сервер я не могу, надо с этим работать. Может как-то можно тест какой-нибудь запустить, чтобы понять, что происходит?

pomotom 16.05.2008 11:15

1. У вас gzip в php работает?
2. если ничего не помогает - ставите TYPO3 локально, устанавливаете расширение, заливаете его папку на сервер, устанавливаете.

Игорь Ф. 16.05.2008 11:28

1. Вообще должен. Честно сказать, не знаю, как можно проверить.

2. Идея понятна. Вечером можно будет попробовать. Но все-таки может есть какой-то вариант как-то протестировать появляющиеся ошибки? А то уж больно неохота связываться с переустановкой TYPO3 на компьютер.

Игорь Ф. 16.05.2008 12:28

Я уже решил глубже покопать, а то вообще никаких идей.
Ошибка при попытке ручной загрузки идет отсюда (файл class.em_terconnection.php):

Цитата:

00148 function decodeExchangeData($str) {
00149 $parts = explode(':',$str,3);
00150 if ($parts[1]=='gzcompress') {
00151 if (function_exists('gzuncompress')) {
00152 $parts[2] = gzuncompress($parts[2]);
00153 } else return 'Decoding Error: No decompressor available for compressed content. gzcompress()/gzuncompress() functions are not available!';
00154 }
00155 if (md5($parts[2]) == $parts[0]) {
00156 $output = unserialize($parts[2]);
00157 if (is_array($output)) {
00158 return array($output,'');
00159 } else return 'Error: Content could not be unserialized to an array. Strange (since MD5 hashes match!)';
00160 } else return 'Error: MD5 mismatch. Maybe the extension file was downloaded and saved as a text file by the browser and thereby corrupted!? (Always select "All" filetype when saving extensions)';00161 }
Собственно есть проблема с функцией gzuncompress (пишет data error) или же разбивкой $str ($parts = explode(':',$str,3);). Отсюда и конечная ошибка.

Есть какие-то идеи?

Игорь Ф. 16.05.2008 13:24

Начал разбираться с остальными ошибками.
Единственное место с ошибкой при перезагрузке зеркал находится в файле class.em_index.php:

function fetchMetaData($metaType) {
global $TYPO3_CONF_VARS;
switch($metaType) {
case 'mirrors':
$mfile = t3lib_div::tempnam('mirrors');
$mirrorsFile = t3lib_div::getURL($this->MOD_SETTINGS['mirrorListURL']);
if($mirrorsFile===false) {
t3lib_div::unlink_tempfile($mfile);
$content = '<p>The mirror list was not updated, it could not be fetched from '.$this->MOD_SETTINGS['mirrorListURL'].'. Possible reasons: network problems, allow_url_fopen is off, curl is not enabled in Install tool.</p>';
} else {
t3lib_div::writeFile($mfile, $mirrorsFile);
$mirrors = implode('',gzfile($mfile));
t3lib_div::unlink_tempfile($mfile);

$mirrors = $this->xmlhandler->parseMirrorsXML($mirrors);
if(is_array($mirrors) && count($mirrors)) {
t3lib_BEfunc::getModuleData($this->MOD_MENU, array('extMirrors' => serialize($mirrors)), $this->MCONF['name'], '', 'extMirrors');
$this->MOD_SETTINGS['extMirrors'] = serialize($mirrors);
$content = '<p>The mirror list has been updated and now contains '.count($mirrors).' entries.</p>';
}
else {
$content = '<p>'.$mirrors.'<br />The mirror list was not updated as it contained no entries.</p>';
}
}
...

Понятно, что ошибка идет из-за ошибки в $mirrorsFile (===false),
а $mirrorsFile - это функция t3lib_div::getURL($this->MOD_SETTINGS['mirrorListURL']).

Значит какая-то проблема с getURL. Связки с проблемой ручной загрузки пока не обнаружил.

Игорь Ф. 16.05.2008 14:12

Ну, и последняя (первая) ошибка, которая непосредственно возникает при подгрузке extensions, ведет к тому же файлу class.em_index.php. Фрагмент непосредственно после предыдущего (в функции fetchMetaData($metaType)):

case 'extensions':
$this->fetchMetaData('mirrors'); // if we fetch the extensions anyway, we can as well keep this up-to-date

$mirror = $this->getMirrorURL();
$extfile = $mirror.'extensions.xml.gz';
$extmd5 = t3lib_div::getURL($mirror.'extensions.md5');
if(is_file(PATH_site.'typo3temp/extensions.xml.gz')) $localmd5 = md5_file(PATH_site.'typo3temp/extensions.xml.gz');

if($extmd5 === false) {
$content .= '<p>Error:
The extension MD5 sum could not be fetched from '.$mirror.'extensions.md5. Possible reasons: network problems, allow_url_fopen is off, curl is not enabled in Install tool.</p>';

} elseif($extmd5 == $localmd5) {
$content .= '<p>The extension list has not changed remotely, it has thus not been fetched.</p>';
} else {
$extXML = t3lib_div::getURL($extfile);
if($extXML === false) {
$content .= '<p>Error: The extension list could not be fetched from '.$extfile.'. Possible reasons: network problems, allow_url_fopen is off, curl is not enabled in Install tool.</p>';
} else {
t3lib_div::writeFile(PATH_site.'typo3temp/extensions.xml.gz', $extXML);
$content .= $this->xmlhandler->parseExtensionsXML(PATH_site.'typo3temp/extensions.xml.gz');
}
}
break;
}


Соответственно проблема возникает из-за ошибки в $extmd5, которая явлется функцией t3lib_div::getURL($mirror.'extensions.md5'), где $mirror = $this->getMirrorURL()

В общем, опять существует некая проблема с функцией getURL из файла class.t3lib_div.php

Игорь Ф. 16.05.2008 14:19

Может кто знает, подскажите, пожалуйста, что обозначают переменные:
$this->MOD_SETTINGS['mirrorListURL']
$this->getMirrorURL()

Я, по-моему, чересчур углубился, а толку никакого. :(

Игорь Ф. 16.05.2008 15:14

$this->MOD_SETTINGS['mirrorListURL'] = $TYPO3_CONF_VARS['EXT']['em_mirrorListURL']

А для $this->getMirrorURL() целая функция есть.

В общем, не знаю, где копать.
У меня в ЕМ никаких зеркал не устанавивается, только стоит ссылка на http://repositories.typo3.org/mirrors.xml.gz.

Надо бы какую-то проверку сделать, но как? :confused:

Игорь Ф. 16.05.2008 16:34

Цитата:

$this->MOD_SETTINGS['mirrorListURL'] = $TYPO3_CONF_VARS['EXT']['em_mirrorListURL']
Посмотрел в backende $TYPO3_CONF_VARS['EXT']['em_mirrorListURL'] = http://repositories.typo3.org/mirrors.xml.gz

Pavel Antonov 16.05.2008 19:48

1) Проверить установлен ли curl
2) Проверить доступен ли на запись каталог typo3temp


Часовой пояс GMT +4, время: 18:17.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot