Обучение/Помощь новичкам | 500 Server Error
Тема закрыта by
dengri_in
Короче проблема в том что вроде все правильно настроенно. Скрипт с автоустановкой. Использую VDS от FirstVDS. Но не могу понять почему происходит ошибка. В логах: По идеи ссылается на то что функция file_exists() пытается получить доступ к файлу autoload.php и из за ограничения open_basedir в конфигах PHP. Ну решил я в конфигах сделать так Перезагрузил сервер Apache. И ничего не изменилось. Как появлялась эта ошибка в логах, так и появляется дальше. Вот код Autoloader.php где фиггирует 69 линия ошибки. Плюс прикреплю скрины. Кто знает как решить проблемку.
------
87515_20240313_162202.png (62.6 Kb)
Скачиваний: 87
php
PHP Warning: file_exists(): open_basedir restriction in effect. File(/autoload.php) is not within the allowed path(s): (/var/www/www-root/data:.) in /var/www/www-root/data/www/localhost.fvds.ru/core/vendor/vonage/nexmo-bridge/src/Autoloader.php on line 69, referer: https://localhost.fvds.ru/admin/dashboard php
open_basedir = /var/www/www-root/data:/var/www/www-root/data/www/localhost.fvds.ru/core php
/** * @throws RuntimeException */ private static function getClassLoader() : ClassLoader { if (file_exists(getenv('COMPOSER_VENDOR_DIR') . '/autoload.php')) { return include getenv('COMPOSER_VENDOR_DIR') . '/autoload.php'; } if (file_exists(__DIR__ . '/../../../autoload.php')) { return include __DIR__ . '/../../../autoload.php'; } if (file_exists(__DIR__ . '/../vendor/autoload.php')) { return include __DIR__ . '/../vendor/autoload.php'; } throw new RuntimeException('Cannot detect composer autoload. Please run composer install'); } ------
Скачиваний: 87
Короче проблема в том что вроде все правильно настроенно. Скрипт с автоустановкой. Использую VDS от FirstVDS. Но не могу понять почему происходит ошибка. В логах:
php
PHP Warning: file_exists(): open_basedir restriction in effect. File(/autoload.php) is not within the allowed path(s): (/var/www/www-root/data:.) in /var/www/www-root/data/www/localhost.fvds.ru/core/vendor/vonage/nexmo-bridge/src/Autoloader.php on line 69, referer: https://localhost.fvds.ru/admin/dashboard php
open_basedir = /var/www/www-root/data:/var/www/www-root/data/www/localhost.fvds.ru/core php
/** * @throws RuntimeException */ private static function getClassLoader() : ClassLoader { if (file_exists(getenv('COMPOSER_VENDOR_DIR') . '/autoload.php')) { return include getenv('COMPOSER_VENDOR_DIR') . '/autoload.php'; } if (file_exists(__DIR__ . '/../../../autoload.php')) { return include __DIR__ . '/../../../autoload.php'; } if (file_exists(__DIR__ . '/../vendor/autoload.php')) { return include __DIR__ . '/../vendor/autoload.php'; } throw new RuntimeException('Cannot detect composer autoload. Please run composer install'); }
скрипт лезет в файловую систему, которая закрыта для доступа - ХОСТЕРОМ
и file_exists() не пытается получить доступ к ФАЙЛУ, она проверяет существование ФАЙЛА ИЛИ КАТАЛОГА, для файловой системы файл и каталог - это одно и то же, если нужно проверить, что подключаемый файл существует и является ИМЕННО ФАЙЛОМ, то нужно использовать is_file()
скрипт должен лежать в папке, которую ХОСТЕР предоставляет для размещения, если ты создал там ещё какие-то папки типа бреда вроде localhost.fvds.ru, то нужно выходить на уровень выше
и file_exists() не пытается получить доступ к ФАЙЛУ, она проверяет существование ФАЙЛА ИЛИ КАТАЛОГА, для файловой системы файл и каталог - это одно и то же, если нужно проверить, что подключаемый файл существует и является ИМЕННО ФАЙЛОМ, то нужно использовать is_file()
скрипт должен лежать в папке, которую ХОСТЕР предоставляет для размещения, если ты создал там ещё какие-то папки типа бреда вроде localhost.fvds.ru, то нужно выходить на уровень выше
И логин www-root обычно ISP создаёт по дефолту

