require_once $_SERVER['DOCUMENT_ROOT'].'/components/com_school/class.php';, который находится в Корень сайта/components/com_school/class.php При выполнении функции выдаётся ошибка: in file [ROOT]/includes/functions_posting.php on line 1699: require_once(/usr/local/apache/htdocs/components/com_school/class.php), т.е. неправильно указываю путь. Как правильно сделать?
Спустя 2 минуты, 44 секунды (2.03.2012 - 12:02) TranceIT написал(а):
echo $_SERVER['DOCUMENT_ROOT'].'/components/com_school/class.php'
И сверяйте вывод пути с реально существующим.
Спустя 14 минут, 40 секунд (2.03.2012 - 12:17) paa66 написал(а):
Сделал и мне выдало ответ. Я его тупо скопировал и вставил себе в код, вот что получилось:
require_once ('/usr/local/apache/htdocs/components/com_school/class.php');Всё равно выдало ошибку.
Спустя 5 минут, 54 секунды (2.03.2012 - 12:23) Visman написал(а):
Полный текст ошибки какой?
Спустя 4 минуты, 27 секунд (2.03.2012 - 12:27) paa66 написал(а):
Вот текст ошибки: [phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_posting.php on line 1699: require_once() [function.require-once]: open_basedir restriction in effect. File(/usr/local/apache/htdocs/components/com_school/class.php) is not within the allowed path(s): (/home/:/usr/lib/php:/tmp)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_posting.php on line 1699: require_once(/usr/local/apache/htdocs/components/com_school/class.php) [function.require-once]: failed to open stream: Operation not permitted
Fatal error: require_once() [function.require]: Failed opening required '/usr/local/apache/htdocs/components/com_school/class.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/u640799076/public_html/forum/includes/functions_posting.php on line 1699
Я стал понимать в чём дело, поэтому переформулирую вопрос. На сайте под Джумлой стоит форум школьного класса. Когда запускается функция этого форума, для этой функции корнем является папка, где находится форум. Хотя на самом деле корень находится выше, где установлена Джумла. Файл, который мне надо подцепить, находится в папке Джумлы, отсюда и проблема. Я не спец в этих делах, но скорее всего ошибка из-за этого. Можно это как-то обойти?
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_posting.php on line 1699: require_once(/usr/local/apache/htdocs/components/com_school/class.php) [function.require-once]: failed to open stream: Operation not permitted
Fatal error: require_once() [function.require]: Failed opening required '/usr/local/apache/htdocs/components/com_school/class.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/u640799076/public_html/forum/includes/functions_posting.php on line 1699
Я стал понимать в чём дело, поэтому переформулирую вопрос. На сайте под Джумлой стоит форум школьного класса. Когда запускается функция этого форума, для этой функции корнем является папка, где находится форум. Хотя на самом деле корень находится выше, где установлена Джумла. Файл, который мне надо подцепить, находится в папке Джумлы, отсюда и проблема. Я не спец в этих делах, но скорее всего ошибка из-за этого. Можно это как-то обойти?
Спустя 14 минут, 13 секунд (2.03.2012 - 12:42) #8bit написал(а):
Если файл находится выше, попробуй так:
require_once '../class.php';
Спустя 42 секунды (2.03.2012 - 12:42) Visman написал(а):
Может стоит вручную прописать относительный путь от вызывающего файла до вызываемого класса.
Или что-то делать с open_basedir
Или что-то делать с open_basedir
Цитата |
Ограничение open_basedir open_basedir содержит перечень каталогов, в которых вы можете открывать файлы. Напоминаю, что open_basedir работает как при включеном, так и при выключеном safe_mode. Таким образом, попытка открыть любой файл в любом каталоге, который не перечислен в open_basedir, приведёт к ошибке, даже если владелец открываемого файла и владелец PHP-скрипта, который пытается открыть этот файл один и тот же. Таким образом, с одной стороны обеспечивается безопасность при работе PHP в режиме mod_php, а с другой стороны создаётся куча проблем для нормальной работы PHP-скриптов в том случае, если требуется что-то не предусмотренное такой системой безопасности, например запуск внешних программ, установленных в операционной системе. |
Спустя 12 минут, 5 секунд (2.03.2012 - 12:54) paa66 написал(а):
Я почитал статью про open_basedir, там шла речь о загрузке файлов, а не о подключении. Мне показалось, что это другой случай.
Спустя 3 часа, 39 минут, 56 секунд (2.03.2012 - 16:34) Agnostic написал(а):
open_basedir как раз и ограничивает подключение сторонних файлов в ваш скрипт, добавьте в php.ini в open_basedir директорию
Спустя 3 часа, 33 минуты, 33 секунды (2.03.2012 - 20:08) paa66 написал(а):
Цитата |
require_once '../class.php'; |
Так не работает. Но не сработал потому, что Джумла и форум на "разных языках". И когда с форума подключаю файл Джумлы, форум не понимает функции этой Джумлы.
Цитата |
open_basedir как раз и ограничивает подключение сторонних файлов в ваш скрипт, добавьте в php.ini в open_basedir директорию |
Я решил просто бросить файл в директорию, из которой раньше пробовал подключать файл. Проблема решилась, хотя и не через open_basedir. Когда поднатаскаюсь в функциях, посмотрю, что это за зверь. Всем спасибо за участие.