PHP 7.1+ Windows readline расширение не все функции существуют - PullRequest
0 голосов
/ 05 мая 2018

Одним из улучшений в PHP7.1 является то, что в Windows расширение readline доступно из коробки. У меня проблемы с использованием всех функций, так как они не все существуют. Следующий код:

$functions = [
    'readline_add_history',
    'readline_callback_handler_install',
    'readline_callback_handler_remove',
    'readline_callback_read_char',
    'readline_clear_history',
    'readline_completion_function',
    'readline_info',
    'readline_list_history',
    'readline_on_new_line',
    'readline_read_history',
    'readline_redisplay',
    'readline_write_history',
    'readline'
];
foreach($functions as $function) {
    echo $function . (function_exists($function) ? ' exists' : ' does not exist') . PHP_EOL;
}

... выдает следующий вывод:

readline_add_history exists
readline_callback_handler_install does not exist
readline_callback_handler_remove does not exist
readline_callback_read_char does not exist
readline_clear_history exists
readline_completion_function exists
readline_info exists
readline_list_history does not exist
readline_on_new_line does not exist
readline_read_history exists
readline_redisplay does not exist
readline_write_history exists
readline exists

Я не могу найти ссылки в руководстве по PHP , что в Windows доступна только часть функций расширения readline.

Когда я звоню php_info(), я получаю следующий вывод:

Readline

Поддержка Readline включена

Библиотека Readline WinEditLine

Есть ли какой-то параметр конфигурации php.ini (или аргумент CLI), который необходимо выполнить, чтобы сделать все функции доступными? Альтернативно, есть ли другой способ сделать функции, такие как readline_callback_handler_install(), доступными в Windows, или расширение только наполовину запечено?

1 Ответ

0 голосов
/ 05 мая 2018

Первоначально я думал, что вы, возможно, каким-то образом переходили на древний PHP 5.0, в котором отсутствуют эти функции, но мне не удалось предположить, что ваш двоичный файл PHP был скомпилирован с базовой библиотекой [или ее версией], которая не ' • не поддерживает функцию, от которой зависят эти функции.

Перекрестная ссылка на список функций, которые отсутствуют с ext/readline/readline.c Я думаю, вам не хватает функций, соответствующих константам / функциям HAVE_RL_CALLBACK_READ_CHAR и HAVE_LIBEDIT, определенным в ext/readline/config.m4.

TL; DR: Кто бы ни скомпилировал ваш PHP, он должен это выяснить. [Вероятно]

...