PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Tuesday, August 30, 2022

[FIXED] How to detect if a PEAR package is installed in php scripts?

 August 30, 2022     pear, php     No comments   

Issue

I'm trying to write some code to track dependencies. Is there a way to programatically detect if a PEAR package has been installed? I'm thinking something like:

if ($some_pear_api->isPackageInstalled('FooPack')) {
    echo 'FooPack is installed!';
} else {
    echo 'FooPack is not installed. :(';
}

I know you can simply detect if the class file for that package exists, but I mostly want to know if PEAR has that installed because sometimes some libraries provide other means of including their code (e.g. PHPUnit has a pear channel as well as a git repo.).

Thanks for the help!


Solution

You need to use the PEAR_Registry class to do this (which is what the PEAR script itself uses). Read Adam Harvey's blog post "pear -> list" from 3 years ago - all the details/examples you need are there.

include 'PEAR/Registry.php';

$reg = new PEAR_Registry;
foreach ($reg->listPackages() as $package) {
    print "$package\n";
}

If you need this to check for specific versions of each package, then you could base something on the following example, which I provided in a comment to that blog entry:

<?php                           
require 'PEAR/Registry.php';
$reg = new PEAR_Registry;                 
define("NAME", 0);         
define("VERSION", 1);
$packages = array(
    array("PEAR", "1.6.2"),
    array("Date", "1.4.7"),    
    array("Date_Holidays", "0.17.1"),
    array("Validate_IE", "0.3.1")
);
foreach ($packages as $package) {
    $pkg = $reg->getPackage($package[NAME]);
    $version = $pkg->getVersion();
    echo "{$package[NAME]} – {$package[VERSION]} – ";
    echo version_compare($version, $package[VERSION], '>=') ? 'OK': 'BAD', "\n";
}
?>

If you need to copy and paste this, then it might be best for you to use the version at https://gist.github.com/kenguest/1671361.



Answered By - kguest
Answer Checked By - Marie Seifert (PHPFixing Admin)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing