Вот полный контекст ситуации:
Недавно у меня появился новый Mac, я разработчик php, поэтому я загрузил MAMP и начал развиваться.
Сначала я заметил, что мои включения не включались, но я изменил это, настроив свой php.ini
.
Однако теперь, когда я пытаюсь включить файл с функцией, он не распознает функцию.
Например, у меня есть файл с именем functions.php
:
<?php function doit(){ echo "did it"; } ?>
и файл, который включает его, называется index.php
<?php include("functions.php"); doit();?>
и я получаю это сообщение об ошибке
Неустранимая ошибка: вызов неопределенной функции doit () в index.php в строке 4
Иногда текущий каталог не тот, который вы ожидаете от него, например, когда вы включаете файл из включенного файла.
Мне нравится использовать $_SERVER['DOCUMENT_ROOT']
для моих включений, чтобы я всегда мог ссылаться на них абсолютно из корня моего сайта:
<?php include($_SERVER['DOCUMENT_ROOT']."/includes/functions.php"); doit(); ?>
в<?php include($_SERVER['DOCUMENT_ROOT']."/includes/functions.php"); doit(); ?>
Если ваш каталог include находится выше вашего корня документа, вы можете использовать ..
для по-прежнему ссылки из корня.
Поэтому, если кто-либо споткнется на этом форуме, потому что у них такая же проблема, позвольте мне объяснить, что и почему это пошло не так.
Если вы включите функцию не в свой каталог (например, c: // или файл: //), но вместо этого включите использование http. Включение может возвращать только то, что было отражено в файле, но что-то вроде переменной или функции не будет отображаться. Поэтому всегда включайте функции и переменные через каталог
Попробуйте require () вместо include. Возможно, включение происходит с ошибкой, и ошибки не отображаются.
У меня тоже есть эта проблема.
В моем случае я узнаю, что это может быть ваш файл functions.php. Разрешено.
Попробуйте «chmod 777 functions.php» на сервере.
Пусть функции.php могут выполняться на веб-сервере.
Спасибо Thatjuan, Becasue, когда я перейду на использование require (), сервер отобразит правильное сообщение об ошибке.
Для меня проблема связана с именем функции во включенном файле с тем же именем, что и функция в исходном файле.
Я сделал все имена функций уникальными и больше не имею проблемы.