У меня есть php-файл за пределами моего веб-сайта, в который я хочу включить файл, находящийся внутри веб-узла.
папка вне webroot
-> php-файл, в который я хочу включить
Webroot
-> файл для включения
Поэтому мне нужно идти по одному каталогу, но это не работает:
include('../webroot/file-to-include.php');
Включить полный путь также не работает:
include('home/xx/xx/domains/mydomain/webroot/file-to-include.php');
Как я могу это сделать?
Полный путь должен быть:
include('/home/xx/xx/domains/mydomain/webroot/file-to-include.php');
Или вы должны установить путь следующим образом:
include(__DIR__ . '/../webroot/file-to-include.php'); // php version >= 5.3 include(dirname(__FILE__) . '/../webroot/file-to-include.php'); // php version < 5.3
Попробуйте добавить конечную косую черту в полный путь, чтобы она выглядела как
include('/home/xx/xx/domains/mydomain/webroot/file-to-include.php');
В противном случае он будет интерпретироваться как относительный путь.
Вы также можете попытаться изменить директорию в webroot и посмотреть, работает ли это – для целей отладки:
chdir("/home/xx/xx/domains/mydomain/webroot"); include "your_file.php";
Имейте это в общем файле, который будет использоваться всеми вашими php-источниками вне webroot:
<?php define('PATH_TO_WEBROOT', '/home/xx/xx/domains/mydomain/webroot');
А затем используйте следующие, чтобы включить файлы.
<?php include (PATH_TO_WEBROOT.'/file-to-include.php');
Если местоположение вашего веб-сайта изменится, вам нужно будет только изменить его в своей базе кода.
Вы можете настроить php для автоматического добавления файла к всем вашим скриптам, установив директиву auto_prepend_file
. Этот файл может содержать, PATH_TO_WEBROOT
константу PATH_TO_WEBROOT
или require_once
файл, который содержит его. Этот параметр может быть выполнен для каждого домена или для каждого узла (см. Документацию ini sections ).
Кроме того, рассмотрите возможность использования функции автозагрузки, если вы активно используете классы.
Я поместил защищенные данные в файл с именем conn.txt
,
и затем я использовал следующую команду PHP:
$DbInfoFile = "../conn.txt";
Это должно работать
$_SERVER['DOCUMENT_ROOT']/home/xx/xx/domains/mydomain/webroot/file-to-include.php
И убедитесь, что у вас есть доступ к этому уровню.