#php #mediawiki #realpath
#php #медиавики #реальный путь
Вопрос:
Я использую MediaWiki, но есть ошибка. Я нашел это в файлах. Есть строка с этим кодом:
$IP = realpath( '.' );
Но $IP возвращает пустую строку, поэтому путь к файлам в системе не работает. (например, если $IP будет .
или E:/path_to_wwwroot
это работает). Как я могу решить эту проблему? Возможно ли, что мой провайдер заблокировал доступ к realpath?
Спасибо!
Комментарии:
1. Получаете ли вы от этого какую — нибудь радость
./
? Это не должно иметь значения, но, возможно, стоит попробовать…2. Нет:-( $IP по-прежнему пуст. Но, например, базовое имя работает. Но я им не пользуюсь, я хочу знать, почему я получаю эту ошибку. С realpath может быть больше ошибок:-(
3. а также
realpath()
не работает с файлами, которые не существуют.
Ответ №1:
Источник: http://php.net/manual/en/function.realpath.php
Примечание: Запущенный скрипт должен иметь права доступа к исполняемому файлу для всех каталогов в иерархии, в противном
realpath()
случае вернет FALSE.
Таким образом, ваш веб-сервер должен иметь доступ также к каталогам до веб-корня.
Комментарии:
1. Ах, спасибо, ему нужны разрешения на чтение для всего каталога в wwwroot? Или также файлы за пределами wwwroot?
2. Вау, это решило проблему! Большое спасибо. Мне нужно было изменить разрешение на чтение с моей карты поддоменов. Спасибо!!!
3. Я столкнулся с этим, когда запускал «переносимое» приложение PHP NGINX WT-NMP, и мое изолированное PHP-приложение ссылалось на библиотеки вне пути, который я указал для open_basedir в php.ini. Я решил эту проблему, также добавив путь к моей библиотеке в open_basedir (используя разделитель «;» в Windows).
4. realpath для файла, который не существует, также возвращает пробел
Ответ №2:
В настоящее время я испытываю этот результат при запуске PHP из командной строки, но не в рамках HTTP-запроса. Где-то должны быть настройки config или $ _SERVER, будут обновлены, если я найду исправление.
Ответ №3:
Путь, который я создавал, не существовал, поэтому всегда следите за тем, чтобы он был правильно сформирован.
Это тот путь, который я использовал:
realpath(MY_PATH . '../other_path');
Где MY_PATH
не было трейлинга /
.