2010-11-30 22 views
2

Eines meiner Skripte benötigt PEAR für einige zusätzliche Funktionen. Ich brauche einen Weg, um festzustellen, ob PEAR in PHP selbst installiert ist. Da PEAR.php wäre im Include-Pfad, wenn richtig installiert, ich nehme an, ich könnte für die Existenz von PEAR.php mit file_exists() überprüfen und dann für die PEAR-Klasse innerhalb es zu versuchen und festzustellen, ob es tatsächlich die Datei, die ich will. Klingt schrecklich hackisch und unzuverlässig.Programmgesteuert PEAR in PHP erkennen

Kann jemand einen besseren oder verbesserten Ansatz vorschlagen?

Antwort

4

Sie können prüfen, ob PEAR installiert ist, indem Sie die Datei System.php anfordern, um festzustellen, ob die Klasse existiert. Diese Methode kann wie folgt durchgeführt werden: http://pear.php.net/manual/en/installation.checking.php

System.php wird mit jeder PEAR-Installation geliefert, so dass es eine einfache Möglichkeit ist, sie zu erkennen.

<?php 
require_once 'System.php'; 
if(class_exists('System')===true) { 
    echo 'PEAR is installed!'; 
} else { 
    echo 'PEAR is not installed :('; 
} 
?> 

Hoffe das hilft dir!

+1

Aber wenn System.php nicht vorhanden war, würde das Skript einen schwerwiegenden Fehler geben? –

+0

Ich wollte nur bemerken, dass das 'if (class_exists ('System') === true)' kurzgeschlossen als 'if (class_exists ('System')) 'verwendet werden kann, aber ich gebe es nur als Beispiel an . –

+0

Ah, das stimmt. Sie könnten 'if (file_exists ('System.php')) {include ('System.php'); } 'stattdessen, um sicherzustellen, dass keine Fehler im Skript angezeigt werden. –

0

Der obige Code ist nicht korrekt. Sie sollten es wie so verwenden:

<?php 
include 'System.php'; 
if(class_exists('System')===true) { 
    echo 'PEAR is installed!'; 
} else { 
    echo 'PEAR is not installed :('; 
} 
?> 
1
<?php 
if(@include_once("System.php")) 
{ 
    echo "Pear is installed"; 
} 
else 
{ 
    echo "Nope"; 
} 
?> 
8

Sie könnten versuchen, die folgende Einstellung zu verwenden, anstatt file_exists mit:

$filePath = stream_resolve_include_path('System.php'); 
if ($filePath !== false) 
{ 
    require_once('System.php'); // you could use $filePath as well 
    echo 'PEAR installed'; 
} 
else 
{ 
    echo 'PEAR not installed'; 
} 

Der schwierige Teil ist, wird PEAR höchstwahrscheinlich hinzugefügt Der aktuelle Pfad enthält. Das ist der Grund, warum Sie System.php und nicht /path/to/pear/System.php verwenden können. Auf diese Weise können Sie herausfinden, ob PEAR bereits installiert ist.