Re: Determining correct PEAR data dir

From: Date: Tue, 14 Sep 2004 20:08:13 +0000
Subject: Re: Determining correct PEAR data dir
References: 1  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-33373@lists.php.net to get a copy of this message
Hi Clay, The safest way to ensure that you are accessing the data dir is not to do it dynamically, but to use the replacements feature of the installer to have the installer "find" it at install-time. http://pear.php.net/manual/en/package.pear.pear-packagefilemanager.pear-packagefilemanager.addreplacement.php <?php $datadir = '@DATA-DIR@'; ?> <file name="foo.php"> <replace from="@DATA-DIR@" to="data_dir" type="pear-config"/> </file> Greg Clay Loveless wrote:
I'm working on an application for a client that I'd like him to be able to install/upgrade with the PEAR installer. I'm also working on a PEAR package that requires database storage, and will need to load a schema file. So, this question is both PEAR and PEAR-DEV related, I guess. The application is still in the design phase, and I would like to be able to have this kind of functionality: <?php $options = array(
    'dsn'           = 'mysql://user:pass@localhost/app_db',
    'config_dir'    = '/path/to/writable/dir'
); $app = new Custom_App($options); if (!$app->installed()) {
    $app->setup();
} else {
    $app->doYourThing();
} ?> The Custom_App::installed() method would check some file containing internal data in the config_dir to determine if the application had been installed. If it has not been, the Custom_App::setup() method would perform all necessary setup operations, including:
    - Create database if it does not exist
    - Import schema into database if it does not exist
The question I'm having is -- how do you best determine where the PEAR_DATA_DIR is located? I need that in order to be able to load up the application schema file. I've looked at the constants that are set when PEAR.php is included, and while PEAR_INSTALL_DIR is set, it doesn't always seem to display the correct path. For example, in my test setup, PEAR_INSTALL_DIR shows '/usr/lib/php'. However, I have a second PEAR install that is essentially a "local" install in '/path/to/stuff/pear' as described in the PEAR manual. When I set my include path to ONLY look in the local PEAR install of '/path/to/stuff/pear', the value of PEAR_INSTALL_DIR does not change. I've tried experiments with PEAR_Info for getting the value of PEAR_INSTALL_DIR relative to the PEAR install directory I'm working with, but the results are the same: data_dir still claims to be in /usr/lib/php/data instead of /path/to/stuff/pear/data. Is this a bug? Or am I not looking in the right spot? Thanks in advance, -Clay


« previous php.pear.dev (#33373) next »