Установка 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 шт):
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();
И напоследок совет. Если вы собираетесь работать с какой-то библиотекой, не поленитесь, загляните в её код и разберитесь, что там происходит. Всё станет ясно и ничьи советы не понадобятся.