cpanm PHP не работает

Что нужно изменить, чтобы установить модуль? php версии 5.3.3 с yum install php-devel на месте.

PHP.c: In function ‘PHP_set_php_input’:
PHP.c:818: warning: passing argument 2 of ‘Perl_sv_2pv_flags’ from incompatible pointer type
/home/mpapec/.plenv/versions/5.20.0/lib/perl5/5.20.0/x86_64-linux/CORE/proto.h:3931: note: expected ‘STRLEN * const’ but argument is of type ‘int *’
cc -c  -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -Wall -O2   -DVERSION=\"0.15\" -DXS_VERSION=\"0.15\" -fPIC "-I/home/mpapec/.plenv/versions/5.20.0/lib/perl5/5.20.0/x86_64-linux/CORE"   array.c
In file included from /usr/include/php/main/php.h:33,
                 from /usr/include/php/sapi/embed/php_embed.h:23,
                 from PHP.h:14,
                 from array.c:9:
/usr/include/php/main/php_config.h:2417:1: warning: "_GNU_SOURCE" redefined
In file included from /home/mpapec/.plenv/versions/5.20.0/lib/perl5/5.20.0/x86_64-linux/CORE/perl.h:28,
                 from PHP.h:9,
                 from array.c:9:
/home/mpapec/.plenv/versions/5.20.0/lib/perl5/5.20.0/x86_64-linux/CORE/config.h:1825:1: warning: this is the location of the previous definition
rm -f blib/arch/auto/PHP/PHP.so
cc  -shared -O2 -L/usr/local/lib -fstack-protector PHP.o array.o  -o blib/arch/auto/PHP/PHP.so  \
                \

chmod 755 blib/arch/auto/PHP/PHP.so
"/home/mpapec/.plenv/versions/5.20.0/bin/perl5.20.0" -MExtUtils::Command::MM -e 'cp_nonempty' -- PHP.bs blib/arch/auto/PHP/PHP.bs 644
Manifying 1 pod document
Running Mkbootstrap for PHP ()
chmod 644 "PHP.bs"
PERL_DL_NONLAZY=1 "/home/mpapec/.plenv/versions/5.20.0/bin/perl5.20.0" "-Iblib/lib" "-Iblib/arch" test.pl
1..79
not ok 1 - use_ok PHP
#   Failed test 'use_ok PHP'
#   at test.pl line 11.
not ok 2 - require PHP;
#   Failed test 'require PHP;'
#   at test.pl line 18.
#     Tried to require 'PHP'.
#     Error:  Attempt to reload PHP.pm aborted.
# Compilation failed in require at (eval 6) line 2.
not ok 3 - eval
#   Failed test 'eval'
#   at test.pl line 49.
Module PHP failed to load at blib/lib/PHP.pm line 80.
Module PHP failed to load at blib/lib/PHP.pm line 80.
END failed--call queue aborted at test.pl line 50.
# Looks like you planned 79 tests but ran 3.
# Looks like you failed 3 tests of 3 run.
# Looks like your test exited with 22 just after 3.
make: *** [test_dynamic] Error 22
-> FAIL Installing PHP failed. See /home/mpapec/.cpanm/work/1440522239.12833/build.log for details. Retry with --force to force install it.
(

person mpapec    schedule 25.08.2015    source источник
comment
Тестер CPAN сейчас недоступен, но боковая панель на metacpan показывает, что 16 из 16 тестов не пройдены. Так что я предполагаю, что это не только вы.   -  person ThisSuitIsBlackNot    schedule 25.08.2015
comment
да, это выглядит не слишком хорошо, я думаю, у @mob есть идеи, как это решить.   -  person mpapec    schedule 25.08.2015
comment
Вы собирали php из исходного кода, настроенного с помощью --enable-embed? Это единственный способ заставить его работать.   -  person mob    schedule 25.08.2015
comment
@mob tnx за отзыв, я попробую, но не знаю, как указать Perl, какой php выбрать?   -  person mpapec    schedule 25.08.2015


Ответы (1)


PHP довольно хрупкий. Вероятно, он не будет работать сразу после установки вашей системы php и может иметь проблемы с 64-разрядными или многопоточными версиями perl.

Я только когда-либо заставлял его работать на Linux. Последняя версия, которую я пытался использовать, — 5.3.8 (еще в 2013 году), хотя я помню, что с 5.2.x до 5.3.8 все шло гладко.

Я всегда собираю php из исходников с такой конфигурацией:

./configure --enable-embed --with-zlib --with-openssl --with-mysql \
        --with-libdir=lib/i386-linux-gnu

--enable-embed абсолютно необходим, как упоминается в модуле, для создания интерпретатора PHP с расширением SAPI, который затем позволяет perl управлять интерпретатором PHP через код XS. Другие расширения были для других требований моего проекта; они могут быть необязательными, но я не экспериментировал с созданием интерпретатора PHP или модуля PHP с какой-либо другой конфигурацией. Модуль также говорит никогда не использовать аргумент --with-apxs, что у меня в любом случае никогда не было соблазна сделать.

Процесс сборки модуля PHP будет искать и требовать программу с именем php-config. Возможно, вам придется взломать ваш $PATH, хотя бы в процессе сборки, чтобы модуль PHP запускал правильный php-config. После этого модуль будет знать, где искать остальную часть вашей установки php.

Какое-то время мне было весело работать с этим модулем (написание Catalyst, а затем оболочки Mojolicious для WordPress), но он пришел в упадок и потерял репутацию. Поделитесь всем, что вы узнали, пытаясь создать его, и мы поместим это в документы, что сделает этот модуль намного проще в использовании.

person mob    schedule 25.08.2015
comment
Большое спасибо, я также хочу использовать его с mojolicious. - person mpapec; 25.08.2015
comment
К моему большому удивлению, я без нареканий собрал 64-битные версии как perl/php, так и PHP-0.15. Откуда мне ждать неприятностей? (perl построен без поддержки потоков) - person mpapec; 29.08.2015
comment
64 бита нормально, я думаю. Думаю, я был сбит с толку, потому что все мои предыдущие тесты с 64-битными версиями также были сконфигурированы с многопоточностью. - person mob; 30.08.2015