Использование функции включения в PHP

Итак, я работаю над стилем веб-сайта электронной коммерции, и у меня есть хост / домен. Насколько я понимаю, я должен размещать свои файлы PHP в другом месте, кроме public_html (в целях безопасности), а расположение index.html находится в / home / user / public_html. Я хочу поместить свои файлы PHP в папку php. Я пробовал использовать:

include("home/user/php/file.php") или же include("../php/file.php").

Я включил использование этих команд в файле ini, и я также попытался установить разрешения для папок (чтение / запись / выполнение). Одна вещь, которая работала, - это установить поддомен с его «корневой» папкой в ​​папку php , но я предполагаю, что это противоречит цели размещения файлов где-то еще на сервере, особенно потому, что я использовал объект для размещения моего php следующим образом:

<object class = "php-script" data = "database.php"></object>

и под своими сценариями java я поставил:

<?php
    include("/home/user/php/database.php");
?>

Заранее спасибо за помощь.

Что происходит, когда вы это делаете? Вы получаете сообщение об ошибке?

ceejayoz 03.04.2018 15:28

если я пытаюсь создать сценарий, который отправляет электронное письмо, когда я нажимаю «отправить», он говорит, что не может найти файл (т.е. сценарий, который отправляет электронное письмо).

TakeDown 03.04.2018 15:38

"Там написано", как у вас появляется сообщение об ошибке? Можете ли вы поделиться точной формулировкой?

ceejayoz 03.04.2018 15:44

когда я нажимаю «отправить», он идет вперед и перенаправляет меня на белую страницу с «URL не найден». Подобно сообщению об ошибке php

TakeDown 03.04.2018 15:49

Скорее всего, это не имеет ничего общего с включением. Похоже, у вас есть тег <form> с недопустимым значением action.

ceejayoz 03.04.2018 16:03

действительно. Теперь я понял, что это довольно глупо, что я пытаюсь сделать, и на самом деле не поможет. так что теперь мне нужно будет найти способ связать файл php или просто написать большую часть страницы на php и использовать include

TakeDown 03.04.2018 16:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
407
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Просто попробуйте следующий код. посмотрите, что он выводит. в основном вам нужно использовать: $ _SERVER ['DOCUMENT_ROOT'] для перехода к файлу вместо того, чтобы вводить путь самостоятельно.

//to get site url 
echo $site_url = "http://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['PHP_SELF']); 

//to the folder
echo $dir = $_SERVER['DOCUMENT_ROOT'].'/user/php/';

if (file_exists($dir) == false) {
echo  "Directory $dir not found!";
} else {
echo "directory found and we are ready to proceed.";
}

дайте мне знать ваш ответ, я помогу вам дальше.

Я настоятельно не рекомендую это, потому что использование PHP_SELF является известной проблемой безопасности: во-первых, вы не учитываете тот факт, что сценарии могут быть вне корня документа, что во-вторых, приводит к публикации внутреннего и обычно опускаемого пути к серверу в $site_url.

codekandis 03.04.2018 15:42

Пожалуйста, замените "gifogrup" на user. Сначала я не хотел говорить об этом, так как это запутанное название. Вот что я получаю. "gifogrup.ro//home/gifogrup/public_html/gifogrup/php/Director‌ y / home / gifogrup / public_html / gifogrup / php / not found!"

TakeDown 03.04.2018 15:43

@codekand, хорошо, спасибо, что указали мне на это. Ты узнаешь что-то новое каждый день

Galzor 04.04.2018 09:21
Ответ принят как подходящий

Обычно использование относительных путей с include или require означает использование относительных путей, начиная с каталога, в котором находится ваш первый вызываемый скрипт вызова URL.

Пример:

application
    src
        database.php
        somescript.php
    public (document root)
        index.php
        news.php

http://example.com/index.php

общедоступный / index.php

<?php
include '../src/database.php'

Это должно быть легко понять.

http://example.com/news.php

общедоступный / news.php

<?php
include '../src/somescript.php';

src / somescript.php

<?php
include '../src/database.php';

Так что позаботьтесь о включении в somescript.php. Неважно, что он находится в папке src. Включить, например, include 'database.php', не удастся, потому что значение имеет путь news.php.


Изменить (2018-04-04)

Я забыл упомянуть. Рассмотрите возможность использования require() / require_once() вместо include() / include_once().

В чем разница между require, include, require_once и include_once?

поэтому я должен создать другой файл со всеми моими включениями, и когда я хочу получить доступ к одному из этих файлов, я просто использую "somescript.php" напрямую?

TakeDown 03.04.2018 15:51

@TakeDown Нет. Я хотел показать вам, что включение файла, который включает файл, не изменяет относительный путь, который вы должны использовать. Вы всегда начинаете «путь» с первого скрипта PHP.

codekandis 03.04.2018 15:57

это сработало, большое спасибо за ваш быстрый ответ. просто быстрый вопрос. Чтобы использовать функцию включения в файле новостей, мне нужно, чтобы он был php. Разве это не уязвимость системы безопасности? или это нормально, потому что в нем есть только функция включения и тег объекта (в моем случае)?

TakeDown 03.04.2018 15:59

@TakeDown Примите во внимание мое последнее изменение ... И ответьте на ваш вопрос в своем последнем комментарии. По крайней мере, у нашего скрипта должно быть расширение, которое должно быть зарегистрировано конфигурацией серверов для выполнения и анализа с помощью PHP. В противном случае ответ на файл будет дан как есть - это может привести к уязвимости системы безопасности, например. грамм. если у вас есть конфиденциальные данные, такие как данные для входа в систему. По умолчанию это зарегистрированные расширения php, phtml, htm и html. Все скрипты, включенные с обязательным / включенным фактически исполняемым PHP скриптом, также анализируются с помощью PHP.

codekandis 04.04.2018 08:42

Другие вопросы по теме