PHP require_once не работает в Linux
Я перевел веб-систему PHP с хостинг-провайдера Windows на хостинг на базе Linux.
В системных скриптах, когда дело доходит до require_once
, скрипт просто останавливается и оставляет пользователя на пустой белой странице.
Я пробовал оба ниже:
Попробуй 1
require_once($_SERVER['DOCUMENT_ROOT'] . '\library\data\Dbec.php') or die("could not load file");
Попробуй 2
require_once(dirname(__FILE__) . '/library/data/Dbec.php') or die("could not load file");
В обоих случаях текст в круглых скобках не отображается, а страница остается пустой. Сценарий, для которого требуются вышеуказанные файлы, находится в /library/membership/theScript.php
Основываясь на чтении, которое я делал до сих пор, возможно, это связано с изменением include_path в файле php.ini или написанием путей другим способом.
Если это что-то из вышеперечисленного или что-то другое, я был бы признателен за некоторые советы.
3 ответа
Проверьте ваш журнал ошибок, чтобы увидеть, если что-то явно не так. Также попробуйте установить error_reporting = E_ALL
и убедитесь, display_errors = On
а также log_errors = On
в вашем php.ini.
Ваш файл, который вы пытаетесь включить, находится в /library/membership/theScript.php, попробуйте сделать:
require_once '../data/Dbec.php';
Также проблема может быть в разрешениях файла и имени файла. Файловая система Windows является случайной, а linux - нет. Таким образом, вы должны проверить имя файла и тот факт, что пользователь, который выполняет этот скрипт, имеет разрешение на чтение для файла, который вы пытаетесь включить с require_once
Это не будет делать то, что вы хотите. Все после require_once
интерпретируется как условный. Это работает ($_SERVER['DOCUMENT_ROOT'] . '\library\data\Dbec.php') or die("could not load file")
и возвращаясь 1
, затем работает require_once 1
,
Чтобы все работало так, как вы ожидаете, вам понадобится дополнительный набор скобок:
(require_once($_SERVER['DOCUMENT_ROOT'] . '\library\data\Dbec.php')) or die("could not load file");
Хотя я не уверен die()
когда-нибудь позвонят. Это зависит от вас, чтобы выяснить.
Смотрите этот связанный отчет об ошибке, который был назван "не ошибка".