2009-08-30 9 views
0

Donc, mon problème est le suivant. Ce code fonctionne correctement lorsque je charge la page via le navigateur Web. Mais quand je lance le script depuis la ligne de commande comme ceci: "php script.php" il bombarde.PHP error_log & includes ne fonctionne pas

script.php est:

<?php 
include_once('class.WebsiteScraper.php'); 
$ws = new WebsiteScraper(); 
$ws->test(); 
... 
?> 

class.WebsiteScraper.php est:

<?php 
echo 'test'; 
class WebsiteScraper { 
    public function test() { 
     echo 'test2'; 
    } 
} 
?> 

Cela renvoie l'erreur:

PHP Fatal error: Call to undefined method WebsiteScraper::test() in ... on line 4

uniquement lorsqu'il est appelé via la ligne de commande ne cela arrive. Une autre chose à noter, quand j'annexera une

error_log('hey there'); 

Pour script.php, il jette l'erreur à la sortie standard, plutôt que dans mon journal d'erreurs. Mais lorsqu'il est appelé à partir du navigateur Web, il le place dans le journal des erreurs. Des idées?

+0

Y at-il une erreur @ fichier include pas trouvé? –

+0

Non, c'est la chose ... Je m'attendrais à une erreur b/c le "fichier n'existe pas", si je mets un nom de fichier fictif en fait une erreur. Donc c'est trouver, mais incapable de charger la méthode sur ma classe? –

Répondre

1

Utilisez le command line option--ini pour vérifier si la ligne de commande est de charger le même fichier de configuration que apache:

php --ini 

Vous pouvez également appeler phpinfo().

Il semble probable que votre fichier n'est pas inclus - probablement en raison de l'inclusion de chemins.

Edit:

Essayez d'ajouter

error_reporting(E_ALL); 
+0

C'est tout! J'utilise MAMP et j'ai édité mon fichier ini pour MAMP (utilisé en conjonction avec Apache). Mais le fichier sys ini est ailleurs. –

+0

Welp, attends. J'ai vérifié les deux fichiers ini et les deux cheminent correctement. Mais lors de l'appel du script à partir de la ligne de commande "error_log" ne fonctionne toujours pas. –

+0

De plus, les fichiers inclus ne retournent pas d'erreurs - php est capable "d'ouvrir un flux", mais aucun des codes dans les fichiers n'est pris en compte/exécuté. –