Вам необходимо поместить эти файлы вне общедоступных папок на вашем веб-сервере.Большинство (всех?) Веб-хостов должны иметь возможность изменять корень документа на сайте.
Например, предположим, что все ваши файлы обслуживаются из следующей директории на вашем хосте: /home/username/www/example.com/
Это означает, что все, что находится в этом каталоге, является видимым для Интернета.Если вы перейдете на http://example.com/myfile.png
, он будет обслуживать файл на /home/username/www/example.com/myfile.png
.
. То, что вы хотите сделать, - это создать новый каталог, например, public
, который будет обслуживать ваши файлы, и указатькорень документа там.После того, как вы это сделаете, запрос на http://example.com/myfile.png
будет отправлен из /home/username/www/example.com/public/myfile.png
(обратите внимание на каталог public
здесь).Теперь все, что находится в каталоге example.com
, не будет отображаться на вашем сайте.Вы можете создать новый каталог с именем, например, private
, где будут храниться ваши конфиденциальные включаемые файлы.
Итак, у вас есть два файла: index.php
, который обслуживает ваш веб-сайт, и sensitive.php
, которыйсодержит пароли и тому подобное.Вы можете настроить их следующим образом:
/home/username/www/example.com/public/index.php
/home/username/www/example.com/private/sensitive.php
Файл index.php
виден в Интернете, но sensitive.php
- нет.Чтобы включить sensitive.php
, вы просто указываете полный путь к файлу:
require_once("/home/username/www/example/com/private/sensitive.php");
Вы также можете установить корень своего приложения (корень файлов ваших сайтов, но не корень общедоступных файлов) в качествеdefine
, возможно, где-нибудь в конфигурационном файле, и используйте его, например:
require_once(APP_ROOT . "sensitive.php");
Если вы не можете изменить корень документа, то некоторые платформы делают использование define
, чтобы отметить, чтофайл не должен быть выполнен напрямую.Вы создаете определение в любом файле, который хотите использовать в качестве точки входа в ваше приложение, обычно просто index.php
, например:
if (!defined('SENSITIVE')) {
define('SENSITIVE', 'SENSITIVE');
}
Затем в любом конфиденциальном файле вы проверяете, что оно установлено, изавершите работу, если это не так, поскольку это означает, что файл выполняется непосредственно, а не вашим приложением:
if (!defined('SENSITIVE')) {
die("This file cannot be accessed directly.");
}
Кроме того, убедитесь, что ваши включаемые файлы доступны для общего доступа (и действительно, даже еслинет), имеют правильное расширение, такое как .php
, чтобы веб-сервер знал, что нужно выполнять их как файлы PHP, а не как обычный текст.Некоторые люди используют .inc
для обозначения включаемых файлов, но если сервер не распознает их как обрабатываемые PHP, ваш код будет доступен всем, кто хочет посмотреть.Это не хорошо!Чтобы предотвратить это, всегда называйте ваши файлы с расширением .php
.Если вы хотите использовать стиль .inc
для отображения включаемых файлов, рассмотрите вариант использования .inc.php
.