2013-03-16 2 views
7

У меня есть некоторые проблемы с относительными и абсолютными путями в php fopen. У меня есть следующие каталоги:Как написать путь в php fopen?

project: 
    scripts: 
     myscript.php 
    logs: 
     mylog.log 

Я хочу, чтобы открыть mylog.log от myscript.php, и я не знаю, как указать путь. Я пробовал

fopen('../logs/mylog.log', "a") 

но это не сработает. Спасибо.

LE: Спасибо за ответы.

+1

Там нет «она не работает», может быть сообщения об ошибках вместо. – str

+0

Это ошибка? Ошибка должна отражать разрешенный путь, к которому обращаются. Также проверьте разрешения. – Anthony

+0

@str - Вы шутите? Я получил * TON * из не работает. – Anthony

ответ

19

В РНР существует несколько глобальных констант, которые могут быть полезны тебе. А именно, __DIR__ дает вам каталог текущего файла ('.' просто дает вам каталог запуска корневого скрипта).

Так что вы хотите:

fopen(__DIR__ . '/../logs/mylog.log', "a") 
+0

Действительно. 'dirname (__ FILE __)' можно использовать для переносимости на установки PHP под 5.3.0. – TaZ

4

Вы можете использовать $_SERVER['DOCUMENT_ROOT'], который дает корень документа виртуального хоста.

примеру: $_SERVER['DOCUMENT_ROOT']."/log/mylog.log"

+2

Вы предполагаете, что он запускает это через веб-сервер, а не в командной строке. –

6

Это должно работать:

fopen(__DIR__ . '/../logs/mylog.log', "a"); 

или в РНР < 5.3:

fopen(dirname(__FILE__) . '/../logs/mylog.log', "a"); 
Смежные вопросы