Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Не работает include в PHP 5.6
krll  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 2
Пользователь №: 42940
На форуме: 6 месяцев, 27 дней
Карма:




Всем здравствуйте!
Настроил себе VPS перенёс сайты. И тут началось... Все вопросы вроде решил с помощью поиска осталось одна.

У меня не работает нормально include().
Все файлы в корне сайта находит include('db_connect.php'); все работает
А вот если в другой папке лежит то все не находит failed to open stream: No such file or directory in ....

Структура папок где сайты лежат такая
/var/www/html/site.ru
/var/www/html/site2.ru
/var/www/html/...

Перепробовал все что знал
include('directory/db_connect.php');
include('/directory/db_connect.php');
include(/var/www/html/site.ru/directory/db_connect.php');
include('/site.ru/directory/db_connect.php');
и даже так
include('../../../../../var/www/html/site.ru/directory/db_connect.php');

Где и что и скать уже теряюсь. А главное не вижу в поиске подобных проблем.

PHP 5.6 Apache/2.2.15 (CentOS)

Если есть мысли пожалуйста подскажите.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3846
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 3 дня
Карма: 87




krll
На месте инклюда проверьте текущую директорию через getcmd и станет все понятно сдается просто путь неправильно ставите


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
krll  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 2
Пользователь №: 42940
На форуме: 6 месяцев, 27 дней
Карма:




Я че-то не нашел в php такой команды.

Проверил командами

dirname($_SERVER['PHP_SELF'])
dirname(__FILE__);

показывает соответственно

/
/var/www/html/site.ru
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 9 дней
Карма: 170




krll
ну вот, соответсвенно делаешь:
define('DOCUMENT_ROOT', '/var/www/html/site.ru/');
include(DOCUMENT_ROOT . 'path_to_file');


если инклюд все равно выплюнул ошибку, значит ты где-то в синтаксисе / путях ошибся.
Копируешь путь из ошибки и пробуешь его скачать по ssh, например. Или в ftp клиенте указываешь этот путь... 100% и они проплюются


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Tumour  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 82
Пользователь №: 42328
На форуме: 11 месяцев, 4 дня
Карма:




krll
а где у тебя находится db_connect.php ?

Просто ты написал сначала, что ты подключаешь include('db_connect.php')
а потом, что ты перепробывал

include('directory/db_connect.php');
include('/directory/db_connect.php');
include(/var/www/html/site.ru/directory/db_connect.php');
include('/site.ru/directory/db_connect.php');

если ты подключаешь этот файл в другой папке, тогда тебе сначала нужно выйти из нее

include '../directory/db_connect.php';

если ты подключаешь в папке и еще в папке тогда

include '../../directory/db_connect.php';

А еще include это конструкция языка, а не функция, пиши include '';
Я понимаю, что не принципиально но все же)))

Это сообщение отредактировал Tumour - 8.05.2016 - 22:50


--------------------
Открой мир с UpTripper

UpTripper.com
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 23 дня
Карма: 7




krll
тебе нужен физический путь до корневой директории, а не по протоколу HTTP.

Попробуй как написал AllesKlar

Или можешь вот так

<?php
define('ROOT', str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/');
include ROOT.'path_to_file';


Так точно работает, сам использую данную конструкцию

Это сообщение отредактировал Astin - 8.05.2016 - 23:53
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 9 дней
Карма: 170




Astin
Цитата (Astin @ 8.05.2016 - 21:50)
$_SERVER['DOCUMENT_ROOT']

не стоит слепо верить DOCUMENT_ROOT.
$_SERVER['DOCUMENT_ROOT'] читается из настроек апача. Что там написано, то и выдаст.
Сама переменная $_SERVER какбэ нам намикает на то, что это переменные окружения веб-сервера, а не хост-машины.
__FILE__ же раскрывает физический путь и не зависит от DOCUMENT_ROOT


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 23 дня
Карма: 7




AllesKlar
Спасибо, теперь будем знать

Но тогда уж не __FILE__ , а __DIR__, так как если поставить __FILE__, то
пишет не только путь, а еще и приписывает к нему исполняемый файл,
а если нужен только путь то __DIR__ будет в самый раз


Это сообщение отредактировал Astin - 9.05.2016 - 11:24
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 23 дня
Карма: 7




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

А если подключать из другого каталога то $_SERVER['DOCUMENT_ROOT'] будет в самый раз
Ну или тогда уж узнать полный путь и прописать как AllesKlar показал
define('DOCUMENT_ROOT', '/var/www/html/site.ru/');

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Цитата (Astin @ 9.05.2016 - 12:21)
И все таки __DIR__ покатит если подключать файл который находится в той же де
директории.

Да ну.
var_dump(realpath(__DIR__.'/../'));

    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 23 дня
Карма: 7




Цитата
Да ну.
var_dump(realpath(__DIR__.'/../'));

Guest ну и зачем все эти сложности со слешами?

А если в файл в котором подключаешь находится еще глубже на один порядок, то что?

Добавлять потом к ссылке '../' такие символы? Зачем мучать свой мозг?
Если файлов куча, то потом скорее запаришься где и сколько добавлять
уровней '../' в каждом подключении.

А так просто один раз прописал
define('ROOT', str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/');

И нигде не нужно добавлять эти слеши и уровень подключения '../'

Короче кому как, каждый делает по своему, не буду спорить
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса