Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
Feb 9 2008, 13:27
Сообщение
#1
|
|
![]() Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 51 Регистрация: 2-February 05 Пользователь №: 86 |
Всем привет! Помогите разобраться пожалуйста кто в курсе.
При установке WordPress 2.3.1 или 2.3.3 происходит превышение времени исполнения и РНР выдает сообщение: Код Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /www/wp-includes/gettext.php on line 85 Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /www/wp-includes/gettext.php on line 85 Fatal error: Maximum execution time of 30 seconds exceeded in /www/wp-includes/gettext.php on line 158 проблема именно на ht-systems.ru возникает: ссылка 1, ссылка 2 (мой топик). С другой стороны, у меня на ht-systems.ru работает еще несколько WordPress разных версий вполне нормально, в т.ч. и 2.3.1 :/ В общем я в растерянности. Что это ВООБЩЕ такое это самое "Type V: not enough input, need 4, have 0"? Что делать? |
|
|
|
Feb 9 2008, 20:55
Сообщение
#2
|
|
![]() Administrator ![]() ![]() ![]() Группа: Admin Сообщений: 649 Регистрация: 11-August 04 Пользователь №: 1 |
А брать нужно родной вордпресс, а в натройках вырубить ru_RU и написать en_US.
|
|
|
|
May 25 2008, 10:31
Сообщение
#3
|
|
|
Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 52 Регистрация: 5-January 05 Из: Казань Пользователь №: 62 |
Столкнулся с той же проблемой.
Все-таки это не баг скрипта. Я скачал свежий русский вордпресс с официального сайта. Предложение пользоваться английской версией - не решение. -------------------- |
|
|
|
May 27 2008, 17:14
Сообщение
#4
|
|
|
Member ![]() ![]() Группа: Admin Сообщений: 12 Регистрация: 13-March 08 Пользователь №: 1.963 |
Цитата(SLam @ May 25 2008, 11:31) [snapback]4339[/snapback] Столкнулся с той же проблемой. Все-таки это не баг скрипта. Я скачал свежий русский вордпресс с официального сайта. Предложение пользоваться английской версией - не решение. Ну вот я вчера поставил скачанную с офсайта русскую версию WP... Ошибок при установке не возникло.... Точно последнюю брали?? |
|
|
|
May 28 2008, 00:56
Сообщение
#5
|
|
|
Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 52 Регистрация: 5-January 05 Из: Казань Пользователь №: 62 |
-------------------- |
|
|
|
May 30 2008, 20:15
Сообщение
#6
|
|
|
Member ![]() ![]() Группа: Admin Сообщений: 12 Регистрация: 13-March 08 Пользователь №: 1.963 |
Сегодня обновил в Установщике версию WP до 2.5.1 и добавил возможность выбора русского при установке. Попробуйте, что ли, из Установщика :-) Даже интересно.
|
|
|
|
May 30 2008, 23:20
Сообщение
#7
|
|
|
Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 52 Регистрация: 5-January 05 Из: Казань Пользователь №: 62 |
Поставил из установщика!
Вот результат: Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /storage/home/slam6en9/chemedia/blog/wp-includes/gettext.php on line 91 Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /storage/home/slam6en9/chemedia/blog/wp-includes/gettext.php on line 91 Fatal error: Maximum execution time of 30 seconds exceeded in /storage/home/slam6en9/chemedia/blog/wp-includes/streams.php on line 66 -------------------- |
|
|
|
Jun 1 2008, 10:23
Сообщение
#8
|
|
|
Member ![]() ![]() Группа: Admin Сообщений: 12 Регистрация: 13-March 08 Пользователь №: 1.963 |
Цитата(SLam @ May 31 2008, 00:20) [snapback]4345[/snapback] Поставил из установщика! Вот результат: Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /storage/home/slam6en9/chemedia/blog/wp-includes/gettext.php on line 91 Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /storage/home/slam6en9/chemedia/blog/wp-includes/gettext.php on line 91 Fatal error: Maximum execution time of 30 seconds exceeded in /storage/home/slam6en9/chemedia/blog/wp-includes/streams.php on line 66 Вот и славно :-) Теперь напишите, пожалуйста, письмо в службу техподдержки, укажите в письме, в какую папку и на каком домене попытаться произвести установку и какую БД можно для этого использовать. Укажите в теле письма ссылку на этот топик и напишите, что письмо для Ильи. Попробую разобраться, почему падает. Цитата В общем я в растерянности. Что это ВООБЩЕ такое это самое "Type V: not enough input, need 4, have 0"? unpack - функция для раскодирования бинарных данных. Поскольку одна и та же последовательность байт может быть преобразована в различные типы данных, для однозначного декодирования нужно указание формата данных. Из мануала по pack format codes имеем: Цитата V - unsigned long (always 32 bit, little endian byte order) Соответственно, 32 бита = 4 байта. Это как раз то количество байт, которое в нашем случае unpack очень хочет получить и не получает. А не получает, видимо, потому, что не удаётся считать из файла - это уже если посмотреть на gettext.php:91. Вот почему не удаётся считать - это и попробуем понять, если скажете, с какими начальными условиями проводить эксперимент
Причина редактирования: уточнение по письму в ТП
|
|
|
|
Jun 3 2008, 17:28
Сообщение
#9
|
|
|
Member ![]() ![]() Группа: Admin Сообщений: 12 Регистрация: 13-March 08 Пользователь №: 1.963 |
Итак, данные были предоставлены SLam-ом при личном общении через службу техподдержки, WordPress был установлен на его аккаунте с указанной им БД.
Путём размещения некоторой отладочной информации в скриптах WordPress было выяснено место, где именно возникает проблема. Если кому интересно, gettext.php:91 к этому на самом деле отношения не имеет. Туда уже передаётся совершенно астрономическое число для чтения :-) Проблема на самом деле в кривоватой библиотеке streams.php. Там используется функция substr() для выделения данных из предварительно прочитанного в память MO-файла. Проблема в том, что разработчики WordPress не учли, что эта функция всё-таки предназначена для строк, а не для блобов :-) И никто не обещал, что она , во-первых, будет binary-safe, во-вторых, что будет работать с данными достаточно быстро. В результате был сделан патч, который решает проблему с операциями с бинарными данными в WordPress, что устраняет ошибки в работе WP на нашем хостинге и заодно повышает скорость работы. В близжайшее время в Установщике приложений появится возможность поставить WP вместе с корректирующим патчем. Соответствующий багрепорт направлен к разработчикам WordPress. Сам патч ниже. [codebox]--- wp-includes/streams.php.orig 2008-02-05 09:47:27.000000000 +0300 +++ wp-includes/streams.php 2008-06-03 18:40:18.000000000 +0400 @@ -54,6 +54,8 @@ class StringReader { var $_pos; var $_str; + var $mem_fd = 0; + var $mem_fd_clen; function StringReader($str='') { $this->_str = $str; @@ -61,18 +63,27 @@ } function read($bytes) { - $data = substr($this->_str, $this->_pos, $bytes); + if($bytes<=0)return 0; + if(!$this->mem_fd) + { + $this->mem_fd = fopen("php://memory", 'r+'); + fputs($this->mem_fd, $this->_str); + $this->mem_fd_clen = ftell($this->mem_fd); + fseek($this->mem_fd, 0); + } + $data = fread($this->mem_fd, $bytes); $this->_pos += $bytes; - if (strlen($this->_str)<$this->_pos) - $this->_pos = strlen($this->_str); + if ($this->mem_fd_clen<$this->_pos) + $this->_pos = $this->mem_fd_clen; return $data; } function seekto($pos) { $this->_pos = $pos; - if (strlen($this->_str)<$this->_pos) - $this->_pos = strlen($this->_str); + if ($this->mem_fd_clen<$this->_pos) + $this->_pos = $this->mem_fd_clen; + fseek($this->mem_fd, $this->_pos); return $this->_pos; } [/codebox]
Причина редактирования: добавлен патч
|
|
|
|
Jun 4 2008, 02:46
Сообщение
#10
|
|
|
Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 52 Регистрация: 5-January 05 Из: Казань Пользователь №: 62 |
битый архив)
-------------------- |
|
|
|
Jun 4 2008, 17:25
Сообщение
#11
|
|
|
Member ![]() ![]() Группа: Admin Сообщений: 12 Регистрация: 13-March 08 Пользователь №: 1.963 |
Цитата(SLam @ Jun 4 2008, 03:46) [snapback]4351[/snapback] битый архив) Действительно :-( Отредактировал пост. Патч написал прямо в теле сообщения. Заодно его стало возможным скачать, не регистрируясь на форуме. |
|
|
|
Jun 10 2008, 18:44
Сообщение
#12
|
|
|
Newbie ![]() Группа: Members Сообщений: 4 Регистрация: 10-June 08 Пользователь №: 2.023 |
Цитата(Бакулин Илья @ Jun 3 2008, 17:28) [snapback]4350[/snapback] Итак, данные были предоставлены SLam-ом при личном общении через службу техподдержки, WordPress был установлен на его аккаунте с указанной им БД. Путём размещения некоторой отладочной информации в скриптах WordPress было выяснено место, где именно возникает проблема. Если кому интересно, gettext.php:91 к этому на самом деле отношения не имеет. Туда уже передаётся совершенно астрономическое число для чтения :-) Проблема на самом деле в кривоватой библиотеке streams.php. Там используется функция substr() для выделения данных из предварительно прочитанного в память MO-файла. Проблема в том, что разработчики WordPress не учли, что эта функция всё-таки предназначена для строк, а не для блобов :-) И никто не обещал, что она , во-первых, будет binary-safe, во-вторых, что будет работать с данными достаточно быстро. В результате был сделан патч, который решает проблему с операциями с бинарными данными в WordPress, что устраняет ошибки в работе WP на нашем хостинге и заодно повышает скорость работы. В близжайшее время в Установщике приложений появится возможность поставить WP вместе с корректирующим патчем. Соответствующий багрепорт направлен к разработчикам WordPress. Сам патч ниже. [codebox]--- wp-includes/streams.php.orig 2008-02-05 09:47:27.000000000 +0300 +++ wp-includes/streams.php 2008-06-03 18:40:18.000000000 +0400 @@ -54,6 +54,8 @@ class StringReader { var $_pos; var $_str; + var $mem_fd = 0; + var $mem_fd_clen; function StringReader($str='') { $this->_str = $str; @@ -61,18 +63,27 @@ } function read($bytes) { - $data = substr($this->_str, $this->_pos, $bytes); + if($bytes<=0)return 0; + if(!$this->mem_fd) + { + $this->mem_fd = fopen("php://memory", 'r+'); + fputs($this->mem_fd, $this->_str); + $this->mem_fd_clen = ftell($this->mem_fd); + fseek($this->mem_fd, 0); + } + $data = fread($this->mem_fd, $bytes); $this->_pos += $bytes; - if (strlen($this->_str)<$this->_pos) - $this->_pos = strlen($this->_str); + if ($this->mem_fd_clen<$this->_pos) + $this->_pos = $this->mem_fd_clen; return $data; } function seekto($pos) { $this->_pos = $pos; - if (strlen($this->_str)<$this->_pos) - $this->_pos = strlen($this->_str); + if ($this->mem_fd_clen<$this->_pos) + $this->_pos = $this->mem_fd_clen; + fseek($this->mem_fd, $this->_pos); return $this->_pos; } [/codebox] скажите пожалуйста, как правильно поправить этот файл streams.php, не совсем понимаю +- что добавить что убрать, может есть уже нормально собранный файл где можно скачать, а то сам код вижу но поправить правильно не получается. Большое спасибо. |
|
|
|
Jun 11 2008, 22:24
Сообщение
#13
|
|
|
Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 399 Регистрация: 27-January 05 Пользователь №: 80 |
Сохранить код как thatpatch.patch в каталоге wordpress
Залогиниться через SSH Зайти в каталог wordpress Сказать patch < ./thatpatch.patch -------------------- Тёмный... Маг... Дракон...
|
|
|
|
Jun 13 2008, 10:58
Сообщение
#14
|
|
|
Newbie ![]() Группа: Members Сообщений: 4 Регистрация: 10-June 08 Пользователь №: 2.023 |
Цитата(DarkDragon @ Jun 11 2008, 22:24) [snapback]4362[/snapback] Сохранить код как thatpatch.patch в каталоге wordpress Залогиниться через SSH Зайти в каталог wordpress Сказать patch < ./thatpatch.patch а проще нельзя как-то это сделать, нельзя ли просто заменить нужный мне файл и все? а то подключиться через SSH, я могу тока через CPanel. не подскажите как быть? бо ошибка часто такая вылазит. |
|
|
|
Jun 15 2008, 13:52
Сообщение
#15
|
|
|
Member ![]() ![]() Группа: Admin Сообщений: 12 Регистрация: 13-March 08 Пользователь №: 1.963 |
Цитата(Сергей help @ Jun 13 2008, 11:58) [snapback]4364[/snapback] а проще нельзя как-то это сделать, нельзя ли просто заменить нужный мне файл и все? а то подключиться через SSH, я могу тока через CPanel. не подскажите как быть? бо ошибка часто такая вылазит. Сообщите, какую именно версию WordPress Вы используете? Дело в том, что патч накладывается конкретно на изменяемый участок кода, гарантируя неизменность остальных; если же заменять целиком файл, не факт, что его содержимое будет соответствовать нужной версии. |
|
|
|
Jun 16 2008, 10:51
Сообщение
#16
|
|
|
Newbie ![]() Группа: Members Сообщений: 4 Регистрация: 10-June 08 Пользователь №: 2.023 |
Цитата(Бакулин Илья @ Jun 15 2008, 13:52) [snapback]4365[/snapback] Сообщите, какую именно версию WordPress Вы используете? Дело в том, что патч накладывается конкретно на изменяемый участок кода, гарантируя неизменность остальных; если же заменять целиком файл, не факт, что его содержимое будет соответствовать нужной версии. версия WordPress 2.5.1. |
|
|
|
Jun 23 2008, 03:11
Сообщение
#17
|
|
|
Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 399 Регистрация: 27-January 05 Пользователь №: 80 |
Цитата(Сергей help @ Jun 13 2008, 11:58) [snapback]4364[/snapback] а проще нельзя как-то это сделать, нельзя ли просто заменить нужный мне файл и все? а то подключиться через SSH, я могу тока через CPanel. не подскажите как быть? бо ошибка часто такая вылазит. Вообще-то это был самый простой способ. Если не можете зайти через SSH (а это вообще бывает??) - скачайте нужный файл к себе на комп по FTP, пропатчите на локальном компьютере и закачайте пропатченный файл обратно. -------------------- Тёмный... Маг... Дракон...
|
|
|
|
Jun 23 2008, 13:36
Сообщение
#18
|
|
|
Newbie ![]() Группа: Members Сообщений: 4 Регистрация: 10-June 08 Пользователь №: 2.023 |
Цитата(DarkDragon @ Jun 23 2008, 03:11) [snapback]4376[/snapback] Вообще-то это был самый простой способ. Если не можете зайти через SSH (а это вообще бывает??) - скачайте нужный файл к себе на комп по FTP, пропатчите на локальном компьютере и закачайте пропатченный файл обратно. вы видите здесь не патч, а код, что мне с этим кодом делать? |
|
|
|
Jul 11 2008, 04:20
Сообщение
#19
|
|
|
Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 399 Регистрация: 27-January 05 Пользователь №: 80 |
Мда... тяжело общаться с человеком, не знающим простых вещей... :/
Пожалуйста, приконнектитесь к ht-systems по SSH и попросите там man patch пожалуйста... ps тридесятой компании большей не существует, есть Хостинговые Телесистемы (администрация) -------------------- Тёмный... Маг... Дракон...
|
|
|
|
Jul 26 2008, 16:42
Сообщение
#20
|
|
|
Newbie ![]() Группа: Members Сообщений: 1 Регистрация: 26-July 08 Пользователь №: 2.052 |
Цитата(Сергей help @ Jun 13 2008, 11:58) [snapback]4364[/snapback] а проще нельзя как-то это сделать, нельзя ли просто заменить нужный мне файл и все? а то подключиться через SSH, я могу тока через CPanel. не подскажите как быть? бо ошибка часто такая вылазит. см. здесь: _http://www.brusdeylins.info/wordpress/probleme-mit-gettextphp/ проще говоря, открываете файл streams.php (в папке wp-includes), находите строчку Код $data = substr($this->_str, $this->_pos, $bytes); и меняете ее на: Код $data = ""; for ($i=0; $i<$bytes; $i++) { $data .= $this->_str[$this->_pos+$i]; }; у меня все стало окей (вроде бы, по крайней мере в течении 15 мин. ходьбы по сайту ошибка больше не повторилась). wp 2.3.3 UPD исправленный streams.php: http://forum.maxsite.org/viewtopic.php?pid=29767#p29767 |
|
|
|
![]() ![]() |
| Текстовая версия | Сейчас: 3rd September 2010 - 01:27 | |
| Хостинг и регистрация доменов | ||