J'utilise $ _SERVER ['DOCUMENT_ROOT']. "/ Lib/sft_required.php"; inclure le fichier 'sft_required' dans un script PHP. Lorsque j'exécute ce fichier en utilisant un navigateur, cela fonctionne très bien, mais quand je l'exécute comme un travail de travail cron, cela ne fonctionne pas. Il semble que le fichier ne soit pas inclus lorsque nous exécutons le script via cron.
Répondre
En supposant que vous exécutez le script directement via cron (par opposition à un serveur Web accédé par une requête HTTP déclenchée par un cronjob (par exemple par cron running wget)), cela ne fonctionne évidemment pas.
Il n'y a pas de serveur, donc $_SERVER
n'est pas défini.
$_SERVER
ne doit pas contenir les valeurs normales lorsqu'un script PHP est exécuté à l'aide de l'interpréteur CLI. Placez le chemin dans une variable d'environnement ou passez-le au script en tant qu'argument de ligne de commande.
vous pouvez remplir le $ _SERVER [ 'DOCUMENT_ROOT'] sur votre propre
$_SERVER['DOCUMENT_ROOT'] = dirname(__FILE__);
si le fichier Cron est dans le document racine
$_SERVER['DOCUMENT_ROOT'] = dirname(dirname(__FILE__));
si le fichier Cron est un répertoire au-dessus du document root
Cette réponse doit être marquée comme acceptée car elle donne une solution pratique à la question de l'OP ... –
J'ai répondu à une question similaire here. Comme les gens l'ont mentionné, le $ _SERVER superglobal n'est pas défini dans les situations CLI. Dans le lien est une méthode infaillible (jusqu'à présent) pour obtenir l'emplacement DOCUMENT_ROOT. J'espère que cela sera utile.
define('DOCROOT', substr(str_replace(pathinfo(__FILE__, PATHINFO_BASENAME), '', __FILE__), 0, -1));
Ceci vous apportera les mêmes données que $_SERVER['DOCUMENT_ROOT']
pour cronjobs.
Pourquoi -1? Cela fonctionne – alimack
trop de choses pour avoir le même résultat que 'dirname (__FILE __) 'et, ne résolvez pas ... –
Exemple 1:
/var/www/site.com/ - DOCUMENT_ROOT;
/var/www/site.com/ cron /script.php - Script PHP CRON;
<?php
/** DOCUMENT_ROOT -> /var/www/site.com/ */
$_SERVER['DOCUMENT_ROOT'] = realpath(dirname(__FILE__).'/../');
?>
Exemple 2:
/var/www/site.com/ - DOCUMENT_ROOT;
/var/www/site.com/ sub_dir/cron /script.php - Script PHP CRON;
<?php
/** DOCUMENT_ROOT -> /var/www/site.com/ */
$_SERVER['DOCUMENT_ROOT'] = realpath(dirname(__FILE__).'/../../');
?>
- 1. php $ _SERVER ['DOCUMENT_ROOT'] trop loin dans l'arborescence
- 2. PHP File Directory - dossier parent $ _SERVER ['DOCUMENT_ROOT']
- 3. $ _SERVER ["SCRIPT_URI"] ne fonctionne pas? alternative?
- 4. Accès à la valeur $ _SERVER ['DOCUMENT_ROOT'] dans le fichier .htaccess
- 5. PHP Cron Job: Y compris le fichier ne fonctionne pas?
- 6. PHP SMTP BCC, ne passant pas par
- 7. php $ _SERVER [ 'REMOTE_ADDR'] ne fonctionne pas correctement sur Windows 7
- 8. équivalent de course $ _SERVER [ « DOCUMENT_ROOT »] lorsque le terminal en cours d'exécution php dans
- 9. Le script PHP ne fonctionne pas dans le fichier HTML
- 10. PHP Register Script - Ne fonctionne pas
- 11. script PHP ne fonctionnera pas comme travail CRON
- 12. Impossible d'exécuter le script PHP cron
- 13. y compris les fichiers sans avoir à spécifier $ _SERVER [ « DOCUMENT_ROOT »]
- 14. Un fichier php ne fonctionne pas dans le script d'appartenance
- 15. comment puis-je référencer $ _SERVER ['DOCUMENT_ROOT'] dans un fichier .htaccess?
- 16. Le script ne fonctionne pas dans localhost
- 17. Pourquoi ne puis-je pas définir $ _SERVER ['DOCUMENT_ROOT'] en tant qu'attribut?
- 18. Le script PHP ne fonctionne pas avec // commentaires
- 19. java script ne fonctionne pas
- 20. Le script PHP fonctionne à partir de la ligne de commande, pas à partir de cron
- 21. Le script de téléchargement Php ne fonctionne pas
- 22. Le script fonctionne dans IE, ne fonctionne pas dans FF?
- 23. script Ruby exécuté de php ne fonctionne pas, mais le script Ruby fonctionne bien seul
- 24. Le téléchargement de fichiers PHP ne fonctionne pas avec le chemin dynamique
- 25. Le script du compteur de clics ne fonctionne pas correctement!
- 26. PHP: Exiger que le chemin ne fonctionne pas pour le travail cron?
- 27. preg_replace dans mon script PHP ne fonctionne pas
- 28. Le fichier .emacs (script) ne fonctionne pas
- 29. PHP Redirect par navigateur La langue ne fonctionne pas!
- 30. bitly php url ne fonctionne pas?
En fait, la superglobale '$ _SERVER' est définie, mais elle contient des valeurs différentes. –
"bien sûr"? Pourquoi le serveur "oublierait" ce que "DOCUMENT_ROOT" est? Ce n'est pas si évident (en fait, après quelques années je ne comprends toujours pas pourquoi DOC_ROOT est vide ('REMOTE_ADDR' etc. sont plus évidentes) – Martijn
@Martijn - Le serveur n'oublie rien. le serveur web, il est géré par cron – Quentin