Как исправить это предупреждение: file_get_contents(): Не удалось найти общедоступную оболочку?

Мне нужно прочитать некоторую метаинформацию из загруженного файла. Но я не знаю, как это сделать.

Вот мой код:

// Path form field_file
$file = 'public://directory/filename.txt';
file_get_contents($file);

Этот код вызывает это предупреждение:

Предупреждение: file_get_contents(): Не удалось найти общедоступную оболочку — вы забыли включить ее при настройке PHP?

Любая идея, что я делаю неправильно, пожалуйста?


person ya.teck    schedule 09.12.2010    source источник
comment
Что такое общедоступная оболочка? Никогда об этом не слышал. Это что-то конкретное для Drupal? Какая метаинформация вам нужна для чтения из загруженного файла?   -  person Pekka    schedule 09.12.2010
comment
drupal.org/node/555118 Да, это специфичная оболочка для drupal. Мне нужно получить имя и тип шрифта из файла TTF.   -  person ya.teck    schedule 09.12.2010


Ответы (3)


Существует три внутренних оболочки потока: private, public и temporary, они определены в этот файл.

Вам может понадобиться file_get_mimetype(), file_get_contents является функцией PHP и не будет знать о файле drupal api.

file_get_contents(drupal_realpath($file));

Сделал бы трюк для чтения.

Для загрузки взгляните на file_save_upload()

person Jeremy French    schedule 09.12.2010
comment
Спасибо. Но работает странно. Если каталог не существует, drupal_realpath вернет FALSE. - person ya.teck; 09.12.2010

Я считаю, что эти оболочки недоступны на hook_boot() или некоторых других ранних стадиях. Поэтому, пожалуйста, переместите свой код в другое место и проверьте, решит ли это проблему.

person kenorb    schedule 29.09.2013

Исправление, которое я использую, это следующий код:

echo base_path().variable_get('file_public_path',conf_path().'/files');

Это все еще не объясняет, почему потоки не работают.

person Christian    schedule 09.06.2011