Доброго всем дня.
Стоит система FreeBSD 11.2 на ней apache24 и php.
До поры, до времени все хорошо работало, проблемы начались после очередного обновления портов.К примеру, на сайте лежит такой файл test.php:
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' =>5);
echo json_encode($arr);
?>При запуске php test.php на выход выдается json, если в браузере набрать example.com/test.php то пишет ошибку: Fatal error: Uncaught Error: Call to undefined function json_encode() in /data/www/ddns/test.php:3 Stack trace: #0 {main} thrown in /data/www/ddns/test.php on line 3
Так же и с другими модулями, не только с json.
Буду очень признателен если подскажите куда копать!
С уважением,
Алексей.
> При запуске php test.php на выход выдается json, если в браузере набрать
> example.com/test.php то пишет ошибку: Fatal error: Uncaught Error: Call to undefinedу браузерной версии может быть другой php.ini, или он может быть переопределен в fpm (если fpm) или в .htaccess - вплоть до полной неработоспособности.
> Буду очень признателен если подскажите куда копать!
в сторону создания файла <?php phpinfo;
и сравнения результата его запроса через веб-сервер с результатами запуска из cli - для начала обращая внимание на "Additional .ini files parsed"P.S. потом не забываем удалить, особенно если тебе не пришло в голову ничего умнее /info.php
> Доброго всем дня.
> Стоит система FreeBSD 11.2 на ней apache24 и php.
> До поры, до времени все хорошо работало, проблемы начались после очередного обновления
> портов.
> К примеру, на сайте лежит такой файл test.php:
> <?php
> $arr = array('a' => 1, 'b' => 2, 'c' =>
> 3, 'd' => 4, 'e' =>5);
> echo json_encode($arr);
> ?>Начните с вывода в коде функции
phpinfo();
Потом сравните ожидаемую версию PHP и список модулей.
Используйте еще системную командуphp -m. Может, еще где-то есть варнинги.
Поищите модуль, в котором находится встроенная функция json_encode.
И в самом тяжелос случае освой модули типа xDebug.
Да. Первым делом я так и поступил. Сравнил phpinfo() из браузера и из cli. Версия совпадают,
Additional .ini совпадают, модули тоже...
> Fatal error: Uncaught Error: Call to undefined function json_encode() in /data/www/ddns/test.php:3 Stack trace: #0 {main} thrown in /data/www/ddns/test.php
> on line 3установите php*-json. проблема заключается в конфликте лицензии JSON Extension и лицензии PHP (начиная с PHP 5.5 модуль по умолчанию не поставляется)
> Так же и с другими модулями, не только с json.
также у вас разные профили PHP (php.ini) для среды выполнения в cgi или mod_php* И cli. смотрите правильный php.ini и активируйте нужные вам extension (предварительно установив их)
>> Fatal error: Uncaught Error: Call to undefined function json_encode() in /data/www/ddns/test.php:3 Stack trace: #0 {main} thrown in /data/www/ddns/test.php
>> on line 3
> установите php*-json. проблема заключается в конфликте лицензии JSON Extension и лицензии
> PHP (начиная с PHP 5.5 модуль по умолчанию не поставляется)
>> Так же и с другими модулями, не только с json.
> также у вас разные профили PHP (php.ini) для среды выполнения в cgi
> или mod_php* И cli. смотрите правильный php.ini и активируйте нужные вам
> extension (предварительно установив их)la version du navigateur peut avoir un php.ini différent, ou il peut être redéfini dans fpm (si fpm) ou dans .htaccess - jusqu'à une inopérabilité complète.
Все-таки, видимо, где-то произошел сбой при обновлении портов. Я восстановил систему из бекапа и обновил порты еще раз. Все заработало.Спасибо большое!
С уважением,
Алексей.
>[оверквотинг удален]
> echo json_encode($arr);
> ?>
> При запуске php test.php на выход выдается json, если в браузере набрать
> example.com/test.php то пишет ошибку: Fatal error: Uncaught Error: Call to undefined
> function json_encode() in /data/www/ddns/test.php:3 Stack trace: #0 {main} thrown in /data/www/ddns/test.php
> on line 3
> Так же и с другими модулями, не только с json.
> Буду очень признателен если подскажите куда копать!
> С уважением,
> Алексей.Lorsque vous démarrez php test.php, json s'affiche en sortie. Si vous tapez exemple.com/test dans le navigateur, une erreur est générée: Erreur irrécupérable: Non capturé. : 3 Trace de pile: # 0 {principal} jeté dans /data/www/ddns/test.php à la ligne 3