Следующие примеры не работают в php —
$data = file_get_contents('~/Documents/someFile.txt');
//Данный файл или каталог отсутствует
$data = file_get_contents('$HOME/Documents/someFile.txt');
// Данный файл или каталог отсутствует
В чем причина, почему это не работает?
Расширение ~
а также $HOME
делается вашей оболочкой, а не PHP. В зависимости от вашей конфигурации, вы можете использовать:
$data = file_get_contents($_SERVER['HOME'] . '/Documents/someFile.txt');
использование getenv('HOME')
или же $_SERVER['HOME']
, Вы не можете использовать $ HOME в одинарных кавычках, потому что будет использоваться его литерал, а ~ не известен php.
$data = file_get_contents('$HOME/Documents/someFile.txt');
имеет две проблемы:
Вы никогда не устанавливаете переменную $HOME
, HOME
является переменной окружения, но они не становятся автоматически переменными PHP, как в оболочке.
Переменные не раскрываются в одинарных кавычках, см. В чем разница между одинарными и двойными кавычками в PHP? (не случайно, это то же самое, что и оболочка).
Ты можешь сделать:
$HOME = getenv('HOME');
$data = file_get_contents("$HOME/Documents/someFile.txt");