Постоянный путь к файлу со стороны файла с классом а не файла с экземпляром класса.

Статус
В этой теме нельзя размещать новые ответы.

VVWind

Новичок
radioheaded, у меня есть .php файлы в папках типа admintools, reports и т.д.
Там вызывается файл с классом.

fixxxer, но ведь в папку для логов норм?

Кстати, почему треш-то?
 

radioheaded

PHP нуб
radioheaded, у меня есть .php файлы в папках типа admintools, reports и т.д.
Там вызывается файл с классом.

fixxxer, но ведь в папку для логов норм?

Кстати, почему треш-то?
Какая разница, где находятся ваши php-файлы? Логи к ним никакого отношения не имеют, прописывайте абсолютные пути. В идеале, у вас в проекте должен быть любым удобным вам способом задан путь к каталогу, в который вы собираетесь складывать все логи. От него уже нужно плясать дальше. Но никак не от того места, где у вас лежат скрипты или откуда вы их запускаете.

Сейчас вам может показаться удобным, что на каком бы сервере вы ни запускали свои скрипты, ваши логи всегда лежат где-то рядом. Но когда вы начнете работать над крупными проектами, поймете, что гораздо удобнее, когда все логи — будь то логи вебсервера, каких-то сервисов, ваших скриптов и прочие — хранятся в одном месте, и место это независимо от расположения кода.

Чаще всего это /var/logs/, /local/logs/ или просто /logs/, а внутри уже деление по сервисам: logs/nginx/, /logs/php/, ...
 

VVWind

Новичок
Нет нет, вы немного не поняли. Логи у меня не для каждого скрипта свои.
Логи все в одной папке в одном файле (обычные логи, логи ошибок примерно так же только там errors.txt)

Один файл для всех логов php скриптов.
Почему я спрашивал, просто путь к примеру /logs/logs.txt превращался в ../logs/logs/.txt для скриптов внутри каких-либо папок, а не около php файла с классом.
Вот в чем суть была.
 

radioheaded

PHP нуб
А, так вся тема создана из-за того, что вы забыли поставить слэш в начале пути?

Смотрите
— относительный путь. Если вы запускаете скрипт из /dir1/dir2/, то абсолютный путь в итоге будет выглядеть как /dir1/dir2/some/path/to/file.txt
— абсолютный путь, потому что начинается со слэша (корневого каталога). Откуда бы вы ни запускали скрипт, этот путь будет неизменным, на то он и абсолютный.
 

VVWind

Новичок
Так... Давайте попробую визуально показать.

Мой каталог.

PHP:
APP [
        index.php
        logclass.php
        admitools [
                      adminscript.php (в нем стоит include ("../logclass.php")
                  ]       
        justscript.php (в нем стоит include ("logclass.php")
        info      [
                  other [
                           logs.txt
                        ]
                  ]
    ]
В чем суть. В logclass.php путь к логам к примеру: $path = "info/other/logs.txt"

В файле justscript класс срабатывает на отлично, ибо файл justscript, как вы видите, находится в одной папке с logclass.php. Так что к путь к логам срабатывает.
В файле adminscript путь НЕ срабатывает потому что он пытается найти admintools/info/other/logs.txt

Я пробовал поставить слэш в начале пути, он все равно ищет именно в своей папке.
Спас __DIR__.
 

radioheaded

PHP нуб
Я пробовал поставить слэш в начале пути, он все равно ищет именно в своей папке.
То есть, вы утверждаете, что пробовали писать $path = "/info/other/logs.txt", но при этом возникала ошибка типа «файл admintools/info/other/logs.txt не существует»? Не верю.
 

VVWind

Новичок
Warning: fopen(/info/other/logs.txt) [function.fopen]: failed to open stream: No such file or directory in Z:\home\localhost\www\app\logclass.php on line 16
Мало того. Теперь он не открывает вообще ни с какого места. Даже с папки app
 

radioheaded

PHP нуб
Ох. Строка
No such file or directory in Z:\home\localhost\www\app\logclass.php on line 16
указывает лишь на место возникновения ошибки. Создайте файл /tmp/test.txt с произвольным содержимым и сравните вызовы file('tmp/test.txt') и file('/tmp/file.txt').

Я не знаю, как вам еще объяснить )
 

VVWind

Новичок
В любом случае у меня уже все работает с __DIR__ и теперь я готов сохранять в логах каждое действие каждого пользователя.
 

VVWind

Новичок
Вообще я создам файл и сделаю два вызова. Со слэшем в начале пути и без него.
Потому что та ошибка
Warning: fopen(/info/other/logs.txt) [function.fopen]: failed to open stream: No such file or directory in Z:\home\localhost\www\app\logclass.php on line 16
мне кажется странной (то что она существует)
 

Фанат

oncle terrible
Команда форума
а я ведь ссылку ещё в самом начале давал
но чесать языком в форуме куда интереснее, чем один раз пойти и прочесть азы компьютерной грамотности.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху