Re: Pear include path problem

From: Date: Tue, 17 Nov 2009 20:17:33 +0000
Subject: Re: Pear include path problem
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-299896@lists.php.net to get a copy of this message
Al wrote: > I've got script that uses the pear Mail class and have had problems on > some shared hosts with the include path to Mail. E.g., Blue Host insists > the site owner must change the php.ini file. I'd rather not expect them > to do that. > > Can you folks critique this approach for me. > > if(EMAIL_MODE=='smtp'){ > $basePath = str_ireplace('public_html', '', > $_SERVER['DOCUMENT_ROOT']); > set_include_path(get_include_path() . PATH_SEPARATOR . basePath); > require_once "$basePath/php" . '/Mail.php'; > $smtpStatus=(class_exists('Mail'))?true:false; > } > > Thanks.... > How about this # Check to see if the constant is defined BEFORE you try to use it. if ( defined('EMAIL_MODE') && EMAIL_MODE == 'smtp' ) { # You might want to do more checking on the path. Checking to see if it # has double forward slashes at the end would be the first place to start $basePath = str_ireplace('public_html', '', $_SERVER['DOCUMENT_ROOT']); # IMO, no improvement needed here set_include_path(get_include_path() . PATH_SEPARATOR . $basePath); # Well, it is what it is $filename = "{$basePath}/php/Mail.php"; # Check to see if file exists and is readable BEFORE you try including it if ( is_file($filename) && is_readable($filename) ) { require_once $filename; $smtpStatus=(class_exists('Mail'))?true:false; } else { $smtpStatus = false; } } Jim Lucas

« previous php.general (#299896) next »