realpath возвращает пустую строку

#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 не было трейлинга / .