интерфейс командной строки — ссылка на домашний каталог в CLI Stack Overflow

Следующие примеры не работают в php —

$data = file_get_contents('~/Documents/someFile.txt');

//Данный файл или каталог отсутствует

$data = file_get_contents('$HOME/Documents/someFile.txt');

// Данный файл или каталог отсутствует

В чем причина, почему это не работает?

-1

Решение

Расширение ~ а также $HOME делается вашей оболочкой, а не PHP. В зависимости от вашей конфигурации, вы можете использовать:

$data = file_get_contents($_SERVER['HOME'] . '/Documents/someFile.txt');
1

Другие решения

использование getenv('HOME') или же $_SERVER['HOME'], Вы не можете использовать $ HOME в одинарных кавычках, потому что будет использоваться его литерал, а ~ не известен php.

1

$data = file_get_contents('$HOME/Documents/someFile.txt');

имеет две проблемы:

  1. Вы никогда не устанавливаете переменную $HOME, HOME является переменной окружения, но они не становятся автоматически переменными PHP, как в оболочке.

  2. Переменные не раскрываются в одинарных кавычках, см. В чем разница между одинарными и двойными кавычками в PHP? (не случайно, это то же самое, что и оболочка).

Ты можешь сделать:

$HOME = getenv('HOME');
$data = file_get_contents("$HOME/Documents/someFile.txt");
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector