2010-12-09 45 views
5

J'ai besoin de lire certaines méta-informations du fichier téléchargé. Mais je ne sais pas comment le faire.Comment réparer cet avertissement: file_get_contents(): Impossible de trouver l'encapsuleur "public"?

Voici mon code:

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

Ce code provoque cet avertissement:

Avertissement: file_get_contents(): Impossible de trouver l'emballage "public" - avez-vous oublié de l'activer quand vous avez configuré PHP?

Une idée de ce que je fais mal, s'il vous plaît?

+1

Qu'est-ce que l'encapsuleur "public"? Jamais entendu parler. Est-ce quelque chose de spécifique à Drupal? Quel genre d'informations Meta avez-vous besoin de lire à partir de quel fichier téléchargé? –

+0

http://drupal.org/node/555118 Oui, c'est un wrapper spéci fi que drupal. J'ai besoin d'obtenir le nom et le type de la police du fichier TTF. –

Répondre

4

Il y a trois enveloppes de flux internes privé, publique et temporaires, ils sont définis dans le fichier this.

Vous voudrez peut-être file_get_mimetype(), file_get_contents est une fonction PHP et ne sera pas au courant de l'API du fichier drupal.

file_get_contents(drupal_realpath($file)); 

Faire l'affaire pour lire.

Pour un téléchargement jeter un oeil à file_save_upload()

+0

Merci. Mais cela fonctionne étrange. Si "directory" n'existe pas, drupal_realpath retournera FALSE. –

0

Le correctif J'utilise est le code suivant:

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

Il n'explique pas pourquoi les flux ne fonctionnent pas.

2

Je crois que ces emballages ne sont pas disponibles dans hook_boot() ou d'autres stades précoces. Alors s'il vous plaît déplacer votre code dans un autre endroit et vérifier si cela réglerait le problème.