Установка MadelineProto

Помогите понять почему MadelineProto не хочет работать. А именно что я сделал: В корне сайта создал отдельную папку MadelineProto. В саму папку закинул файл madeline.php и рядом создал файл test.php

test.php

<?php
  include 'madeline.php';
  $MP = new \danog\MadelineProto\API('session.madeline');
  $MP->start();

Далее перейдя из браузера на test.php у меня появляется страницы настройки где я должен указать id и hash из телеги. После того как я указал настройка сама пропадает и сообщения оправляются без проблем. Сейчас я захотел файл test.php перенести в корень из папки MadelineProto и соответственно заменил include

было

include 'madeline.php';

стало

include 'MadelineProto/madeline.php';

После того как я перенес файл в корень у меня постоянно высвечивается настройка где нужно указывать id и hash. И даже если повторно указать данные настройка не куда не пропадает, НО если файл вернуть назад в папку всё работает хорошо.

Как перенести файл в корень при этом что бы содержимое папки MadelineProto остались на месте без переноса?


Ответы (1 шт):

Автор решения: Solt

madeline.php - это не сама библиотека, а инсталлер. При первом запуске он по путям, относительно вашего test.php понаставил свои компоненты.

Первый вариант - удалить всё, что он поставил и попробовать вызвать свой test.php из корня, есть вероятность, что он поставит всё с правильными путями. Хотя, маловероятно, любая нормальная библиотека первым делом выясняет свой путь и корректно его использует.

Второй вариант в test.php первым делом перейти в папку MadelineProto, сделав её текущей:

<?php
  chdir($_SERVER['DOCUMENT_ROOT'].'/MadelineProto');
  //include 'madeline.php'; //Плохая команда
  require_once 'madeline.php';
  $MP = new \danog\MadelineProto\API('session.madeline');
  $MP->start();

Третий вариант. Путь для сохранения сессии задаётся в конструкторе. Если он без пути, происходит попытка сохранить в текущую папку. Очевидно, прав на сохранение файлов в корне сайта нет. Можно попробовать указать файл сессии с путями. И лучше не там же, где лежит библиотека, а в каком-нибудь отдельном каталоге с правами на запись, например /sessions:

<?php
  $root_dir=$_SERVER['DOCUMENT_ROOT'];
  require_once "$root_dir/MadelineProto/madeline.php";
  $MP = new \danog\MadelineProto\API("$root_dir/sessions/session.madeline");
  $MP->start();

И напоследок совет. Если вы собираетесь работать с какой-то библиотекой, не поленитесь, загляните в её код и разберитесь, что там происходит. Всё станет ясно и ничьи советы не понадобятся.

→ Ссылка