Php. File_get_contents при консольном вызове.


Сегодня столкнулся с очень интересной особенностью работы file_get_contents и других функций, использующих файловую систему при консольном вызове скрипта.

Как оказалось есть важная деталь при работе в консоли — она состоит в определении текущей директории для составления относительных путей.

Т.е. при вызове с браузера относительный путь строится от самого скрипта. При этом при консольном вызове скрипта — относительный путь строится от папки, которая является текущей в терминале.

Например, при вызове http://site.com/folder/script.php текущей папкой скрипта (от которой будет работать относительный путь) будет именно папка folder. Это логичное и привычное поведение.

НО. Если мы вызовем этот же скрипт с консоли (предварительно перейдя в любой каталог) — например так:

cd /home/some_user
php /var/www/site.com/folder/script.php

… то текущей папкой будет выступать /home/some_user.

Думаю теперь стало понятнее. При этом константа __DIR__ по прежнему сохраняет верное значение и для правильной работы file_get_contents, file и других функций следует просто изменить текущую папку, например так:

chdir( __DIR__ ) ;
, ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *