Как установить PHP без ошибок в make test?

99 views
Skip to first unread message

Vladislav

unread,
Oct 11, 2008, 6:35:51 AM10/11/08
to highloa...@googlegroups.com
Всем привет!

Уже пятый день бьюсь с корректной установка PHP + php-fpm.
После
#./configure
# make
делаю проверку
# make test
И получаю кучу ошибок -

=====================================================================
TEST RESULT SUMMARY
---------------------------------------------------------------------

Exts skipped : 57
Exts tested : 22
---------------------------------------------------------------------

Number of tests : 5811 4186
Tests skipped : 1625 ( 28.0%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 13 ( 0.2%) ( 0.3%)
Tests passed : 4173 ( 71.8%) ( 99.7%)
---------------------------------------------------------------------
Time taken : 337 seconds
==============================================

==============================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Bug #16069 (ICONV transliteration failure) [ext/iconv/tests/bug16069.phpt]
iconv stream filter [ext/iconv/tests/iconv_stream_filter.phpt]
Test array_diff_assoc() function : usage variations - strict string comparison check [ext/standard/tests/array/array_diff_assoc_variation6.phpt]
Test array_pad() function : usage variations - unexpected values for 'pad_size' argument(Bug#43482) [ext/standard/tests/array/array_pad_variation2.phpt]
Test closedir() function : usage variations - close a file pointer [ext/standard/tests/dir/closedir_variation3.phpt]
Test readdir() function : usage variations - empty directories [ext/standard/tests/dir/readdir_variation2.phpt]
Test readdir() function : usage variations - use file pointers [ext/standard/tests/dir/readdir_variation7.phpt]
Test rewinddir() function : basic functionality [ext/standard/tests/dir/rewinddir_basic.phpt]
Test rewinddir() function : usage variations - operate on a closed directory [ext/standard/tests/dir/rewinddir_variation2.phpt]
Test rewinddir() function : usage variations - file pointers [ext/standard/tests/dir/rewinddir_variation3.phpt]
proc_open [ext/standard/tests/general_functions/proc_open02.phpt]
Test bindec() - basic function test bindec() [ext/standard/tests/math/bindec_basic.phpt]
money_format test [ext/standard/tests/strings/moneyformat.phpt]
=====================================================================


Пробовал в Debian Stable и Testing, причем как c php, который идет с
Debian (с родным):

# $apt-get build-dep php5
# $apt-get source php5 (или dpkg-source -x php5-тра-ла-ла.dsc, если все файлы уже есть)
# $cd php5-тра-ла-ла
# export QUILT_PATCHES=debian/patches
# quilt push -a
# ./configure
# make
# make test

... так и с официальным php c php.net:

# wget php-5.2.6.tar.gz
# tar -jxvf php-5.2.6.tar.gz
# cd php-5.2.6
# ./configure
# make
# make test

В связи с этим вопрос - ЭТО ВООБЩЕ РЕАЛЬНО ПОЛУЧИТЬ PHP БЕЗ FAILED TEST
SUMMARY???
Ошибки возникают разные (в зависимости от дистрибутива и способа установки.
Я уже отчаялся получить нормальный php...

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

Многие используют php из дистрибутива и вывода make test родного php не
видят.
Но когда пробуешь подлючить php-fpm - все сразу проявляется.

Может это допустимо использоваться php с подобными ошибками? Или я
что-то не так делаю?..

PS: интересно, каким дистрибутивом пользуются разработчики php? (и
php-fpm ;-)
PS2: make test официального php-5.2.6 на Debian Lenny:

=====================================================================
TEST RESULT SUMMARY
---------------------------------------------------------------------
Exts skipped : 57
Exts tested : 22
---------------------------------------------------------------------

Number of tests : 5811 4153
Tests skipped : 1658 ( 28.5%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 15 ( 0.3%) ( 0.4%)
Tests passed : 4138 ( 71.2%) ( 99.6%)
---------------------------------------------------------------------
Time taken : 444 seconds
=====================================================================

=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Bug #16069 (ICONV transliteration failure) [ext/iconv/tests/bug16069.phpt]
iconv stream filter [ext/iconv/tests/iconv_stream_filter.phpt]
Test array_pad() function : usage variations - unexpected values for
'pad_size' argument(Bug#43482)
[ext/standard/tests/array/array_pad_variation2.phpt]
Test closedir() function : usage variations - close a file pointer
[ext/standard/tests/dir/closedir_variation3.phpt]
Test readdir() function : usage variations - empty directories
[ext/standard/tests/dir/readdir_variation2.phpt]
Test readdir() function : usage variations - use file pointers
[ext/standard/tests/dir/readdir_variation7.phpt]
Test rewinddir() function : basic functionality
[ext/standard/tests/dir/rewinddir_basic.phpt]
Test rewinddir() function : usage variations - operate on a closed
directory [ext/standard/tests/dir/rewinddir_variation2.phpt]
Test rewinddir() function : usage variations - file pointers
[ext/standard/tests/dir/rewinddir_variation3.phpt]
money_format test [ext/standard/tests/strings/moneyformat.phpt]
Test setlocale() function : basic functionality - setting system locale
to a specific [ext/standard/tests/strings/setlocale_basic1.phpt]
Test setlocale() function : basic functionality - set locale using an
array [ext/standard/tests/strings/setlocale_basic2.phpt]
Test setlocale() function : basic functionality - passing multiple
locales as argument [ext/standard/tests/strings/setlocale_basic3.phpt]
Test setlocale() function : usage variations - passing multiple
valid/invlaid locales as argument
[ext/standard/tests/strings/setlocale_variation1.phpt]
Test setlocale() function : usage variations - setting system locale = 0
[ext/standard/tests/strings/setlocale_variation3.phpt]
=====================================================================


Antony Dovgal

unread,
Oct 11, 2008, 6:50:28 AM10/11/08
to highloa...@googlegroups.com
On 11.10.2008 14:35, Vladislav wrote:
> ==============================================
> FAILED TEST SUMMARY
> ---------------------------------------------------------------------
> Bug #16069 (ICONV transliteration failure) [ext/iconv/tests/bug16069.phpt]
> iconv stream filter [ext/iconv/tests/iconv_stream_filter.phpt]

Это нормально.

> Test array_diff_assoc() function : usage variations - strict string comparison check [ext/standard/tests/array/array_diff_assoc_variation6.phpt]
> Test array_pad() function : usage variations - unexpected values for 'pad_size' argument(Bug#43482) [ext/standard/tests/array/array_pad_variation2.phpt]
> Test closedir() function : usage variations - close a file pointer [ext/standard/tests/dir/closedir_variation3.phpt]
> Test readdir() function : usage variations - empty directories [ext/standard/tests/dir/readdir_variation2.phpt]
> Test readdir() function : usage variations - use file pointers [ext/standard/tests/dir/readdir_variation7.phpt]
> Test rewinddir() function : basic functionality [ext/standard/tests/dir/rewinddir_basic.phpt]
> Test rewinddir() function : usage variations - operate on a closed directory [ext/standard/tests/dir/rewinddir_variation2.phpt]
> Test rewinddir() function : usage variations - file pointers [ext/standard/tests/dir/rewinddir_variation3.phpt]
> proc_open [ext/standard/tests/general_functions/proc_open02.phpt]
> Test bindec() - basic function test bindec() [ext/standard/tests/math/bindec_basic.phpt]

Что в .diff ?
Каждый тест оставляет после себя файл .diff, пришлите его мне, я гляну.
Также нужно знать OS, архитектуру и т.п.

> money_format test [ext/standard/tests/strings/moneyformat.phpt]

Что в .diff?
Этот конкретный тест зависит от локали и некоторые braindead OS (смотрит в сторону MacOS)
его никогда не проходят из-за кривой локали.

> В связи с этим вопрос - ЭТО ВООБЩЕ РЕАЛЬНО ПОЛУЧИТЬ PHP БЕЗ FAILED TEST
> SUMMARY???

Прекратите истерику.
Это всего-лишь тесты, они тоже могут быть неправильные, неполные и просто кривые.

> Может это допустимо использоваться php с подобными ошибками? Или я
> что-то не так делаю?..

Ну конечно да.
Сообщать об этом надо, но бегать кругами и кричать "АААА!" не стоит.



> PS: интересно, каким дистрибутивом пользуются разработчики php?

Насколько мне известно, в основном Debian, MacOS, SuSe/openSuSe, Fedora, FreeBSD, Ubuntu
(отсортировано примерно по кол-ву человек).

--
Wbr,
Antony Dovgal

Message has been deleted
Message has been deleted

Antony Dovgal

unread,
Oct 11, 2008, 3:02:52 PM10/11/08
to highloa...@googlegroups.com
On 11.10.2008 18:20, Vladislav wrote:
> Antony Dovgal пишет:

>>> Test bindec() - basic function test bindec() [ext/standard/tests/math/bindec_basic.phpt]
>>>
>>
>> Что в .diff ?
>> Каждый тест оставляет после себя файл .diff, пришлите его мне, я гляну.
>>
> Послал в предыдущем сообщении. Это бинарные diff'ы.

Это не бинарные диффы, это 10240 нулей.

> Подскажите, пожалуйста, как их смотреть? (тоже хочу убедиться, что все ОК)

Там должны быть обычные текстовые, хорошо читабельные диффы.
Пример:

# cat ext/standard/tests/strings/setlocale_variation2.diff
006+ Test FAILED
007+ Names of locale() for which setlocale() failed ...
008+ array(2) {
009+ [0]=>
010+ string(14) "hy_AM.armscii8"
011+ [1]=>
012+ string(19) "ja_JP.shiftjisx0213"
013+ }
006-

--
Wbr,
Antony Dovgal

Antony Dovgal

unread,
Oct 11, 2008, 4:54:14 PM10/11/08
to highloa...@googlegroups.com
Ок, получил диффы.

On 11.10.2008 14:35, Vladislav wrote:

> Bug #16069 (ICONV transliteration failure) [ext/iconv/tests/bug16069.phpt]
> iconv stream filter [ext/iconv/tests/iconv_stream_filter.phpt]

Как я уже говорил, это нормально.
Вернее, эти тесты надо либо править, либо удалять, т.к. они зависят от
какой-то конкретной (судя по всему, очень древней) версии iconv.
В общем, пока игнорируйте это.

> Test array_diff_assoc() function : usage variations - strict string comparison check [ext/standard/tests/array/array_diff_assoc_variation6.phpt]

diff-а нет, видимо тест прошел?

> Test array_pad() function : usage variations - unexpected values for 'pad_size' argument(Bug#43482) [ext/standard/tests/array/array_pad_variation2.phpt]

Исправлено:
[3 Dec 2007 2:13pm UTC] il...@php.net
This bug has been fixed in CVS.

> Test closedir() function : usage variations - close a file pointer [ext/standard/tests/dir/closedir_variation3.phpt]

> Test readdir() function : usage variations - use file pointers [ext/standard/tests/dir/readdir_variation7.phpt]

> Test rewinddir() function : usage variations - file pointers [ext/standard/tests/dir/rewinddir_variation3.phpt]

Это всё одна проблема (некритичная), которая была исправлена уже после 5.2.6.

> Test readdir() function : usage variations - empty directories [ext/standard/tests/dir/readdir_variation2.phpt]

004+ string(2) ".."
005- string(2) ".."

Разница только в номерах строк.
Уже исправлено..

> Test rewinddir() function : basic functionality [ext/standard/tests/dir/rewinddir_basic.phpt]

Порядок файлов при чтении важен =[
Тест уже исправлен, правда.

> Test rewinddir() function : usage variations - operate on a closed directory [ext/standard/tests/dir/rewinddir_variation2.phpt]

Кривой тест, уже исправлен.

> proc_open [ext/standard/tests/general_functions/proc_open02.phpt]
> Test bindec() - basic function test bindec() [ext/standard/tests/math/bindec_basic.phpt]

Не получил diff-а.

> money_format test [ext/standard/tests/strings/moneyformat.phpt]

Кривая OS/локаль ?
001+ string(6) "X3.14Y"
001- string(7) "X$3.14Y"

man strfmon говорит:
n One argument of type double is converted using the locale's national currency format.

в тесте используется money_format("X%nY", 3.1415) (что равноценно strfmon(.., .., "X%nY", 3.1415),
при этом локаль устанавливается в en_US.
Куда исчез знак доллара?

--
Wbr,
Antony Dovgal

Vladislav

unread,
Oct 12, 2008, 3:58:15 PM10/12/08
to highloa...@googlegroups.com
Antony Dovgal пишет:
Ок, получил диффы.
Test array_diff_assoc() function : usage variations - strict string comparison check [ext/standard/tests/array/array_diff_assoc_variation6.phpt]
    
diff-а нет, видимо тест прошел?
  
Да, второй раз, когда делал make, make test, его уже не было.

Test array_pad() function : usage variations - unexpected values for 'pad_size' argument(Bug#43482) [ext/standard/tests/array/array_pad_variation2.phpt]
    
Исправлено:
[3 Dec 2007 2:13pm UTC] il...@php.net
This bug has been fixed in CVS.
  
Подскажите, если из CVS скачать php,  то это будет та же версия? 5.2.6?

Test closedir() function : usage variations - close a file pointer [ext/standard/tests/dir/closedir_variation3.phpt]
Test readdir() function : usage variations - use file pointers [ext/standard/tests/dir/readdir_variation7.phpt]
Test rewinddir() function : usage variations - file pointers [ext/standard/tests/dir/rewinddir_variation3.phpt]
    
Это всё одна проблема (некритичная), которая была исправлена уже после 5.2.6.
  
Т.е. нужно 5.2.7 дождаться...

proc_open [ext/standard/tests/general_functions/proc_open02.phpt]
Test bindec() - basic function test bindec() [ext/standard/tests/math/bindec_basic.phpt]
    
Не получил diff-а.
  
Второй раз, когда делал make, make test, его уже не было.
money_format test [ext/standard/tests/strings/moneyformat.phpt]
    
Кривая OS/локаль ?
  
Это Debian Lenny (testing). Локаль ru_RU.UTF-8.

001+ string(6) "X3.14Y"
001- string(7) "X$3.14Y"

man strfmon говорит:
n      One argument of type double is converted using the locale's national currency format.

в тесте используется money_format("X%nY", 3.1415) (что равноценно strfmon(.., .., "X%nY", 3.1415),
при этом локаль устанавливается в en_US. 
Куда исчез знак доллара?
  
Не знаю, может баг-репорт написать в Debian. Только я не знаю как. ;-(

PS: Большое спасибо за ответы. Хоть что-то прояснилось.
Если не трудно, дайти pls url, по которому вы узнаете - какой баг уже пофиксен, а где просто некорректный тест.

Antony Dovgal

unread,
Oct 12, 2008, 5:03:26 PM10/12/08
to highloa...@googlegroups.com
On 12.10.2008 23:58, Vladislav wrote:
> Подскажите, если из CVS скачать php, то это будет та же версия? 5.2.6?

Я думаю, вам проще будет взять снапшот: http://snaps.php.net
Берите php-5.2-dev

>> в тесте используется money_format("X%nY", 3.1415) (что равноценно strfmon(.., .., "X%nY", 3.1415),
>> при этом локаль устанавливается в en_US.
>> Куда исчез знак доллара?
>>
> Не знаю, может баг-репорт написать в Debian. Только я не знаю как. ;-(

Попробуйте собрать вот этот код:
-------strfmon_test.c-------
#include <stdio.h>
#include <locale.h>
#include <monetary.h>

int main() {
char buf[32];
char *res;

res = setlocale(LC_MONETARY, "en_US");
if (!res) {
printf("setlocale(en_US) failed\n");
}
strfmon(buf, 32, "X%nY", 3.1415);
printf("%s\n", buf);
return 0;
}
----------------------------

# gcc strfmon_test.c -o strfmon_test
# ./strfmon_test

Если в результате выводится что-то отличное от "X$3.14Y", то проблема в локали или системе.
Видимо, вам сюда: http://www.debian.org/Bugs/Reporting
Можно для подтверждения попробовать тот же код на других системах.

> *PS*: Большое спасибо за ответы. Хоть что-то прояснилось.


> Если не трудно, дайти pls url, по которому вы узнаете - какой баг уже пофиксен,
> а где просто некорректный тест.

Я смотрел в CVS и в баг-тракере + что-то я просто помню.
http://cvs.php.net/viewvc.cgi/php-src/
http://bugs.php.net

--
Wbr,
Antony Dovgal

Vladislav

unread,
Oct 13, 2008, 5:09:46 AM10/13/08
to highloa...@googlegroups.com
Antony Dovgal пишет:
в тесте используется money_format("X%nY", 3.1415) (что равноценно strfmon(.., .., "X%nY", 3.1415),
при этом локаль устанавливается в en_US. 
Куда исчез знак доллара?
  
      
Не знаю, может баг-репорт написать в Debian. Только я не знаю как. ;-(
    
Попробуйте собрать вот этот код:
-------strfmon_test.c-------
#include <stdio.h>
#include <locale.h>
#include <monetary.h>

int main() {
    char buf[32];
    char *res;

    res = setlocale(LC_MONETARY, "en_US");
    if (!res) {
        printf("setlocale(en_US) failed\n");
    }
    strfmon(buf, 32, "X%nY", 3.1415);
    printf("%s\n", buf);
    return 0;
}
----------------------------

# gcc strfmon_test.c -o strfmon_test
# ./strfmon_test

Если в результате выводится что-то отличное от "X$3.14Y", то проблема в локали или системе.,
  
Вывод программы:
setlocale(en_US) failed
X3.14Y

Я сделал dpkg-reconfigure locales, добавил en_US.UTF-8 UTF-8 (было только ru_RU.UTF8 UTF-8), но это ничего не поменяло.


Antony Dovgal

unread,
Oct 13, 2008, 5:45:47 AM10/13/08
to highloa...@googlegroups.com
On 13.10.2008 13:09, Vladislav wrote:
> Вывод программы:
> setlocale(en_US) failed
> X3.14Y

а в PHP что получается если сделать:
var_dump(setlocale(LC_MONETARY, 'en_US'));
?

--
Wbr,
Antony Dovgal

Vladislav

unread,
Oct 13, 2008, 6:32:45 AM10/13/08
to highloa...@googlegroups.com
Antony Dovgal пишет:
On 12.10.2008 23:58, Vladislav wrote:
Подскажите, если из CVS скачать php,  то это будет та же версия? 5.2.6?

Я думаю, вам проще будет взять снапшот: http://snaps.php.net
Берите php-5.2-dev
Только что скачал php5.2-200810130830.tar.bz2 с http://snaps.php.net
make test уже несколько другой -

=====================================================================
FAILED TEST SUMMARY Debian Lenny (testing) i386
---------------------------------------------------------------------
Bug #45392 (ob_start()/ob_end_clean() and memory_limit) [tests/lang/bug45392.phpt]

Bug #16069 (ICONV transliteration failure) [ext/iconv/tests/bug16069.phpt]
iconv stream filter [ext/iconv/tests/iconv_stream_filter.phpt]
Test session_decode() function : variation [ext/session/tests/session_decode_variation3.phpt]
Test session_encode() function : variation [ext/session/tests/session_encode_variation8.phpt]

Test array_pad() function : usage variations - unexpected values for 'pad_size' argument(Bug#43482) [ext/standard/tests/array/array_pad_variation2.phpt]
Test array_slice() function : usage variations - Pass different data types as $offset arg [ext/standard/tests/array/array_slice_variation2.phpt]
Test array_slice() function : usage variations - Pass different data types as $length arg [ext/standard/tests/array/array_slice_variation3.phpt]
money_format test [ext/standard/tests/strings/moneyformat.phpt]
=====================================================================

C Bug #16069 и money_format test вопросов нет. Array_pad_variation2 почему-то остался.
Пожалуйста, если не трудно, посмотрите другие ошибки.
Diff'ы в приложении.

Я попробовал этот же php на своей рабочей станции (не на сервере) c Linux Mint Elyssa (сделан на основе Ubuntu 8.04). Что интересно, в make test ошибки те же, только добавился memory limit и proc_open:

=====================================================================
FAILED TEST SUMMARY Linux Mint Elyssa (stable) i386
---------------------------------------------------------------------
Bug #45392 (ob_start()/ob_end_clean() and memory_limit) [tests/lang/bug45392.php
t]

Bug #16069 (ICONV transliteration failure) [ext/iconv/tests/bug16069.phpt]
iconv stream filter [ext/iconv/tests/iconv_stream_filter.phpt]
Test session_decode() function : variation [ext/session/tests/session_decode_variation3.phpt]
Test session_encode() function : variation [ext/session/tests/session_encode_variation8.phpt]

Test array_pad() function : usage variations - unexpected values for 'pad_size' argument(Bug#43482) [ext/standard/tests/array/array_pad_variation2.phpt]
Test array_slice() function : usage variations - Pass different data types as $offset arg [ext/standard/tests/array/array_slice_variation2.phpt]
Test array_slice() function : usage variations - Pass different data types as $length arg [ext/standard/tests/array/array_slice_variation3.phpt]
proc_open [ext/standard/tests/general_functions/proc_open02.phpt]
money_format test [ext/standard/tests/strings/moneyformat.phpt]
=====================================================================




deb_lenny_test_php_snap_dif.tar.gz
deb_elyssa_test_php_snap_diff.tar.gz

Antony Dovgal

unread,
Oct 13, 2008, 6:37:56 AM10/13/08
to highloa...@googlegroups.com
On 13.10.2008 14:32, Vladislav wrote:
> Bug #45392 (ob_start()/ob_end_clean() and memory_limit) [tests/lang/bug45392.phpt]
> Bug #16069 (ICONV transliteration failure) [ext/iconv/tests/bug16069.phpt]
> iconv stream filter [ext/iconv/tests/iconv_stream_filter.phpt]
> Test session_decode() function : variation
> [ext/session/tests/session_decode_variation3.phpt]
> Test session_encode() function : variation
> [ext/session/tests/session_encode_variation8.phpt]

да, всё так и должно быть.

> Test array_pad() function : usage variations - unexpected values for 'pad_size'
> argument(Bug#43482) [ext/standard/tests/array/array_pad_variation2.phpt]
> Test array_slice() function : usage variations - Pass different data types as
> $offset arg [ext/standard/tests/array/array_slice_variation2.phpt]
> Test array_slice() function : usage variations - Pass different data types as
> $length arg [ext/standard/tests/array/array_slice_variation3.phpt]
> money_format test [ext/standard/tests/strings/moneyformat.phpt]

не могу воспроизвести.
может быть, потому что у меня 64bit?

--
Wbr,
Antony Dovgal

Reply all
Reply to author
Forward
0 new messages