2010-11-30 3 views
2

내 스크립트 중 하나에 몇 가지 추가 기능을 위해 PEAR이 필요합니다. PEAR이 PHP 자체 내에 설치되어 있는지 감지 할 수있는 방법이 필요합니다. PEAR.php이 올바르게 설치 되었다면 포함 경로에 있기 때문에 file_exists()으로 PEAR.php의 존재를 확인한 다음 PEAR 클래스를 검사하여 실제로 원하는 파일인지 확인합니다. 믿을 수 없을 정도로 불안정하고 신뢰할 수없는 것 같습니다.PHP에서 프로그래밍 방식으로 PEAR 검색

누구나 더 나은 방법이나 개선 된 방법을 제안 할 수 있습니까?

답변

4

System.php 파일이 있어야 클래스가 있는지 확인할 수 있으므로 PEAR이 설치되어 있는지 확인할 수 있습니다. 이 방법은 여기에 설명 된대로 수행 할 수 있습니다. http://pear.php.net/manual/en/installation.checking.php

System.php는 모든 PEAR 설치와 함께 제공되므로 쉽게 감지 할 수 있습니다.

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

희망이 당신을 돕는다!

+1

그러나 System.php가 없으면 스크립트에서 치명적인 오류가 발생하지 않습니까? –

+0

'if (class_exists ('System') === true)'는'if (class_exists ('System'))'와 같이 단락 될 수 있지만 단지 예제를 제공하도록 설정했다는 점에 유의하고 싶다. . –

+0

아, 맞습니다. 당신은'if (file_exists ('System.php')) {include ('System.php'); }'대신 스크립트에서 오류가 나타나지 않도록하십시오. –

0

위 코드가 올바르지 않습니다. 당신과 같이 사용한다 :

가 까다로운 부분은
$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'; 
} 

, PEAR는 대부분에 추가됩니다

<?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

당신은 file_exists를 사용하여보다는, 다음과 같은 설정을 사용하려고 할 수 있습니다 현재 포함 경로. System.php를 사용할 수있는 이유는 /path/to/pear/System.php가 아닌 이유입니다. 이렇게하면 PEAR이 이미 설치되어 있는지 확인할 수 있습니다.

관련 문제