. * * @category Installation * @package Installation * @license GNU Affero General Public License http://www.gnu.org/licenses/ * */ define('INSTALLDIR', dirname(__FILE__)); $external_libraries=array( array( 'name'=>'gettext', 'url'=>'http://us.php.net/manual/en/book.gettext.php', 'check_function'=>'gettext' ), array( 'name'=>'PEAR', 'url'=>'http://pear.php.net/', 'deb'=>'php-pear', 'include'=>'PEAR.php', 'check_class'=>'PEAR' ), array( 'name'=>'DB', 'pear'=>'DB', 'url'=>'http://pear.php.net/package/DB', 'deb'=>'php-db', 'include'=>'DB/common.php', 'check_class'=>'DB_common' ), array( 'name'=>'DB_DataObject', 'pear'=>'DB_DataObject', 'url'=>'http://pear.php.net/package/DB_DataObject', 'include'=>'DB/DataObject.php', 'check_class'=>'DB_DataObject' ), array( 'name'=>'Console_Getopt', 'pear'=>'Console_Getopt', 'url'=>'http://pear.php.net/package/Console_Getopt', 'include'=>'Console/Getopt.php', 'check_class'=>'Console_Getopt' ), array( 'name'=>'Facebook API', 'url'=>'http://developers.facebook.com/', 'include'=>'facebook/facebook.php', 'check_class'=>'Facebook' ), array( 'name'=>'htmLawed', 'url'=>'http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed', 'include'=>'htmLawed/htmLawed.php', 'check_function'=>'htmLawed' ), array( 'name'=>'HTTP_Request', 'pear'=>'HTTP_Request', 'url'=>'http://pear.php.net/package/HTTP_Request', 'deb'=>'php-http-request', 'include'=>'HTTP/Request.php', 'check_class'=>'HTTP_Request' ), array( 'name'=>'Mail', 'pear'=>'Mail', 'url'=>'http://pear.php.net/package/Mail', 'deb'=>'php-mail', 'include'=>'Mail.php', 'check_class'=>'Mail' ), array( 'name'=>'Mail_mimeDecode', 'pear'=>'Mail_mimeDecode', 'url'=>'http://pear.php.net/package/Mail_mimeDecode', 'deb'=>'php-mail-mimedecode', 'include'=>'Mail/mimeDecode.php', 'check_class'=>'Mail_mimeDecode' ), array( 'name'=>'Mime_Type', 'pear'=>'Mime_Type', 'url'=>'http://pear.php.net/package/Mime_Type', 'include'=>'MIME/Type.php', 'check_class'=>'Mime_Type' ), array( 'name'=>'Net_URL_Mapper', 'pear'=>'Net_URL_Mapper', 'url'=>'http://pear.php.net/package/Net_URL_Mapper', 'include'=>'Net/URL/Mapper.php', 'check_class'=>'Net_URL_Mapper' ), array( 'name'=>'Net_Socket', 'pear'=>'Net_Socket', 'url'=>'http://pear.php.net/package/Net_Socket', 'deb'=>'php-net-socket', 'include'=>'Net/Socket.php', 'check_class'=>'Net_Socket' ), array( 'name'=>'Net_SMTP', 'pear'=>'Net_SMTP', 'url'=>'http://pear.php.net/package/Net_SMTP', 'deb'=>'php-net-smtp', 'include'=>'Net/SMTP.php', 'check_class'=>'Net_SMTP' ), array( 'name'=>'Net_URL', 'pear'=>'Net_URL', 'url'=>'http://pear.php.net/package/Net_URL', 'deb'=>'php-net-url', 'include'=>'Net/URL.php', 'check_class'=>'Net_URL' ), array( 'name'=>'Net_URL2', 'pear'=>'Net_URL2', 'url'=>'http://pear.php.net/package/Net_URL2', 'include'=>'Net/URL2.php', 'check_class'=>'Net_URL2' ), array( 'name'=>'Services_oEmbed', 'pear'=>'Services_oEmbed', 'url'=>'http://pear.php.net/package/Services_oEmbed', 'include'=>'Services/oEmbed.php', 'check_class'=>'Services_oEmbed' ), array( 'name'=>'Stomp', 'url'=>'http://stomp.codehaus.org/PHP', 'include'=>'Stomp.php', 'check_class'=>'Stomp' ), array( 'name'=>'System_Command', 'pear'=>'System_Command', 'url'=>'http://pear.php.net/package/System_Command', 'include'=>'System/Command.php', 'check_class'=>'System_Command' ), array( 'name'=>'XMPPHP', 'url'=>'http://code.google.com/p/xmpphp', 'include'=>'XMPPHP/XMPP.php', 'check_class'=>'XMPPHP_XMPP' ), array( 'name'=>'PHP Markdown', 'url'=>'http://www.michelf.com/projects/php-markdown/', 'include'=>'markdown.php', 'check_class'=>'Markdown_Parser' ), array( 'name'=>'OAuth', 'url'=>'http://code.google.com/p/oauth-php', 'include'=>'OAuth.php', 'check_class'=>'OAuthRequest' ), array( 'name'=>'Validate', 'pear'=>'Validate', 'url'=>'http://pear.php.net/package/Validate', 'include'=>'Validate.php', 'check_class'=>'Validate' ) ); $dbModules = array( 'mysql' => array( 'name' => 'MySQL', 'check_module' => 'mysql', // mysqli? 'installer' => 'mysql_db_installer', ), 'pgsql' => array( 'name' => 'PostgreSQL', 'check_module' => 'pgsql', 'installer' => 'pgsql_db_installer', ), ); /** * the actual installation. * If call libraries are present, then install * * @return void */ function main() { if (!checkPrereqs()) { return; } if ($_GET['checklibs']) { showLibs(); } else { if ($_SERVER['REQUEST_METHOD'] == 'POST') { handlePost(); } else { showForm(); } } } /** * checks if an external libary is present * * @param string $external_library Name of library * * @return boolean indicates if library present */ function haveExternalLibrary($external_library) { if (isset($external_library['include']) && ! include_once $external_library['include'] ) { return false; } if (isset($external_library['check_function']) && ! function_exists($external_library['check_function'])) { return false; } if (isset($external_library['check_class']) && ! class_exists($external_library['check_class'])) { return false; } return true; } /** * Check if all is ready for installation * * @return void */ function checkPrereqs() { $pass = true; if (file_exists(INSTALLDIR.'/config.php')) { printf('
Config file "config.php" already exists.
'); $pass = false; } if (version_compare(PHP_VERSION, '5.2.3', '<')) { printf('Require PHP version 5.2.3 or greater.
'); $pass = false; } $reqs = array('gd', 'curl', 'xmlwriter', 'mbstring','tidy'); foreach ($reqs as $req) { if (!checkExtension($req)) { printf('Cannot load required extension: %s
Cannot find mysql or pgsql extension. You need one or the other: %s
Cannot write config file to: %s
On your server, try this command: chmod a+w %s
', INSTALLDIR);
$pass = false;
}
// Check the subdirs used for file uploads
$fileSubdirs = array('avatar', 'background', 'file');
foreach ($fileSubdirs as $fileSubdir) {
$fileFullPath = INSTALLDIR."/$fileSubdir/";
if (!is_writable($fileFullPath)) {
printf('
Cannot write to %s directory: %s
On your server, try this command: chmod a+w %s
Laconica comes bundled with a number of libraries required for the application to work. However, it is best that you use PEAR or you distribution to manage libraries instead, as they tend to provide security updates faster, and may offer improved performance.
On Debian based distributions, such as Ubuntu, use a package manager (such as "aptitude", "apt-get", and "synaptic") to install the package listed.
On RPM based distributions, such as Red Hat, Fedora, CentOS, Scientific Linux, Yellow Dog Linux and Oracle Enterprise Linux, use a package manager (such as "yum", "apt-rpm", and "up2date") to install the package listed.
On servers without a package manager (such as Windows), or if the library is not packaged for your distribution, you can use PHP's PEAR to install the library. Simply run "pear install <name>".
Enter your database connection information below to initialize the database.
Laconica bundles a number of libraries for ease of installation. You can see what bundled libraries you are using, versus what libraries are installed on your server.