2010-06-04 6 views
3

J'ai un fichier php qui utilise file_get_contents()erreur file_get_contents Cron()

Il fonctionne très bien dans le navigateur, mais échoue avec l'erreur suivante lorsqu'il est exécuté comme une tâche cron:

Avertissement: file_get_contents (): URL d'accès aux fichiers est désactivé dans la configuration du serveur dans /path/to/the/phpfile.php en ligne 22

C'est ce que j'utilise:

/usr/bin/php5 -q /path/to/the/phpfile.php

Iv'e déjà mis allow_url_fopen = true dans php.ini, mais cela ne semble pas avoir de effet.

Tout fonctionne parfaitement dans le navigateur. Comment cela peut-il être réparé?

+0

lisez-vous du protocal sécurisé qui est https? – Sarfraz

+0

Non, c'est un appel API http. – Yeti

Répondre

1

Si vous chargez un fichier à partir d'un système distant, vous devriez utiliser curl à la place. file_get_contents ne gère pas les délais réseau, les redirections ou la capture d'erreurs. Et est évidemment désactiver dans la configuration du serveur.

0

Vous pourriez avoir involontairement plus d'une copie de PHP et/ou de php.ini sur le système. Avez-vous des droits d'administrateur sur le PC? Faites une recherche globale pour php et voyez ce qui se passe.

+0

Ceci est WRT mon serveur web et je n'ai pas accès au PC. par "copie de PHP" voulez-vous dire différentes versions de PHP? – Yeti

+0

Je voulais dire différentes installations, différentes versions ou différents fichiers de configuration. Par exemple, la réponse de chronos. – zildjohn01

2
  1. Do php --info | more
  2. course et voir qui php.ini il utilise (top 5 lignes)
  3. changement que fichier php.ini

Ou vous pouvez utiliser le --php-ini /path/to/ini (faire man php) pour spécifier le fichier ini que vous souhaitez utiliser.

+0

Je pense que la fusion de ma réponse dans le vôtre ferait une réponse assez complète :) – chronos

+0

php --info "more shown - /usr/local/php-5.2.6-1/etc/php.ini Mais je ne trouve pas ce dossier? – Yeti

+0

J'ai accès à/home/my_site_folder mais je ne vois/usr nulle part. Est-ce que cela signifie que je ne serai pas capable de changer le fichier php.ini? – Yeti

1

Au moins certaines distributions Linux ont plusieurs configurations PHP (fichiers php.ini). Par exemple, les tests Debian a ces deux:

/etc/php5/apache2/php.ini 
/etc/php5/cli/php.ini 

Dans l'exemple ci-dessus différentes configurations PHP sont utilisées pour l'appel Web (via apache) et pour l'invocation de ligne de commande.

Ce peut être être votre problème.

0

Au lieu d'utiliser php -q, utilisez php -cron dans votre configuration cron. Ça marche pour moi.