Как вызвать файл вне public_html в доменном каталоге с помощью php - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть домен с поддоменом. Я хочу вызвать файл в папке поддоменов, но, очевидно, моя папка поддоменов находится вне каталога public_html. Вот что я пробовал, но ничего не происходит. Папка субдомена - субдомен.

<?php
include("subdomain/conn.php") // location of the file in the subdomain
?>

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Обычно наиболее полезно включить с абсолютный путь вместо относительного пути . Есть два типичных подхода к этому. Этот пример будет работать со следующей структурой каталогов, поскольку вы не указали свою:

 +var
 |+www
  |+public_html
   -index.php
   |+subfolder
    |somescript.php
  |+subdomain
   |conn.php

1) В вашем файле index.php объявите константу, соответствующую абсолютному пути к каталогу public_html

define('APPLICATION_BASE', __DIR__ . DIRECTORY_SEPARATOR);

Затем позже используйте этот префикс для всех включений и добавьте путь относительно него:

include APPLICATION_BASE . '../subdomain/conn.php';

Этот параметр хорошо работает для большинства общих целей, позволяя вам быстро включить практически любой файл, относящийся к файлу front-controller / index

2) В качестве альтернативы, если вы не используете унифицированный индексный файл и не имеете непротиворечивой точки отсчета, достаточно надежной, чтобы ее всегда можно было включить, вы должны применить аналогичный подход, а включить на основе по абсолютному пути из файла, включая его . Обычно это означает, что вам не хватает хорошей структуры приложения, но для быстрого и грязного приложения или устаревшего кода, который не был структурирован с определенной единой точкой доступа, это часто необходимо. В случае, если вам нужно было включить файл из somescript.php, и вы не смогли прибыть туда с index.php, вы, вероятно, сделали бы что-то вроде этого:

include __DIR__ . '/../../subdomain/conn.php';

Следует отметить, что это работает в крайнем случае, но это далеко не оптимально, и вы должны попытаться прижать ваше приложение к первому подходу, если это вообще возможно. Использование единой точки входа сэкономит вам массу догадок при отладке, так как вы будете знать, что все файлы включены в зависимости от релевантности для единственного исходного каталога, и будут сохранять сообщения об ошибках и вести журнал намного чище и со временем более читаемыми. , что в свою очередь сэкономит вам много времени на отладку.

0 голосов
/ 05 сентября 2018

Я еще не пробовал, но должно работать.

$public_htmlUrl = $_SERVER['DOCUMENT_ROOT'];
$outsideUrl = "../".$public_htmlUrl;
$file = outsideUrl."subdomain/conn.php";
include($file);
...