source: install/install.php @ fcd1c2

Revision fcd1c2, 8.7 KB checked in by pierre-alain <pierre-alain@…>, 6 years ago (diff)

added memcache as optionnal library

  • Property mode set to 100644
Line 
1<?php
2namespace OWR;
3die('COMMENT THIS LINE TO START INSTALL PROCESS');
4
5define('PATH', dirname(__DIR__).DIRECTORY_SEPARATOR); // define root path
6define('HOME_PATH', PATH.'OWR'.DIRECTORY_SEPARATOR); // define home path
7
8$libraries = array('curl' => false, 'imagick' => false, 'pdo' => true, 'mbstring'=>true, 'xmlreader'=>true, 'pdo_mysql'=>true, 'pcre'=>true, 'json' => true, 'libxml' => true, 'gettext' => true, 'date'=>true,'intl'=>true, 'spl' => true, 'filter' => true, 'memcache' => false); // 'true' is required, but others are really needed :)
9
10$messages = array();
11$messages['PHP extensions'] = array();
12
13$errors = array();
14
15if(isset($_GET['step']))
16    $step = (int) $_GET['step'];
17else $step = 0;
18
19if(isset($_GET['valid']))
20    $valid = (bool) $_GET['valid'];
21else $valid = false;
22
23foreach($libraries as $library => $required)
24{
25    $messages['PHP extensions'][$library] = extension_loaded($library);
26    if(!$messages['PHP extensions'][$library] && $required)
27    {
28        $errors[] = 'Missing required library '.$library;
29    }
30}
31
32$messages['PHP extensions']['finfo'] = class_exists('finfo',false);
33
34$messages['PHP_VERSION'] = version_compare(PHP_VERSION, '5.3.0', '>=');
35if(!$messages['PHP_VERSION']) 
36{
37    $errors[] = 'Sorry but OpenWebReader required at least PHP version 5.3';
38}
39
40$messages['OS_VERSION'] = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? 'Windows' : PHP_OS;
41if('Windows' === $messages['OS_VERSION'])
42{
43    $errors[] = 'WARNING : OpenWebReader has not been tested to run under Windows. You should not install it on production server.';
44}
45
46if($step)
47{
48    switch($step)
49    {
50        case 1:
51            if(!file_exists('../OWR/cfg.php')) $errors[] = 'Please reload the page after having set the config file (and edited values !)';
52            break;
53        case 2:
54            if(!file_exists('../OWR/cfg.php')) $errors[] = 'Please reload the page after having set the config file (and edited values !)';
55            elseif(!is_writeable('../OWR/cache/')) $errors[] = 'Please chmod the directory ../OWR/cache/ to be accessible in read/write for web server (example : chown -R www-data ../OWR/cache/ && chmod -R 700 ../OWR/cache/)';
56            elseif(!is_writeable('../OWR/logs/')) $errors[] = 'Please chmod the directory ../OWR/logs/ to be accessible in read/write for web server (example : chown -R www-data ../OWR/logs/ && chmod -R 700 ../OWR/logs/)';
57            elseif(!is_writeable('../OWR/logs/cli.log')) $errors[] = 'Please chmod the file ../OWR/logs/cli.log to be accessible in read/write for web server (example : chown -R www-data ../OWR/logs/ && chmod 700 ../OWR/logs/ && chmod 600 ../OWR/logs/cli.log)';
58            break;
59        case 3:
60            if(!file_exists('../OWR/cfg.php')) $errors[] = 'Please reload the page after having set the config file (and edited values !)';
61            elseif(!is_writeable('../OWR/cache/')) $errors[] = 'Please chmod the directory ../OWR/cache/ to be accessible in read/write for web server (example : chown -R www-data ../OWR/cache/ && chmod -R 700 ../OWR/cache/)';
62            elseif(!is_writeable('../OWR/logs/')) $errors[] = 'Please chmod the directory ../OWR/logs/ to be accessible in read/write for web server (example : chown -R www-data ../OWR/logs/ && chmod -R 700 ../OWR/logs/)';
63            elseif(!is_writeable('../OWR/logs/cli.log')) $errors[] = 'Please chmod the file ../OWR/logs/cli.log to be accessible in read/write for web server (example : chown -R www-data ../OWR/logs/ && chmod -R 700 ../OWR/logs/ && chmod 600 ../OWR/logs/cli.log)';
64            else
65            {
66                include '../OWR/cfg.php';
67                try
68                {
69                    DB::iGet();
70                }
71                catch(Exception $e)
72                {
73                    $errors[] = $e->getContent();
74                }
75            }
76            break;
77        case 4:
78            if(!file_exists('../OWR/cfg.php')) $errors[] = 'Please reload the page after having set the config file (and edited values !)';
79            else
80            {
81                include '../OWR/cfg.php';
82                try
83                {
84                    $db = DB::iGet();
85                }
86                catch(Exception $e)
87                {
88                    $errors[] = $e->getContent();
89                    break;
90                }
91            }
92           
93            $sql = @file_get_contents('./init_db.sql');
94            if(!$sql)
95            {
96                $errors[] = 'Can not get the contents of the file init_db.sql, please check your package and/or rights on this file (read access required for web server)';
97                break;
98            }
99            if(!$valid) break;
100            $queries = explode(";", $sql);
101            $db->beginTransaction();
102            foreach($queries as $query)
103            {
104                if(!trim($query)) continue;
105                try
106                {
107                    $db->set($query);
108                }
109                catch(Exception $e)
110                {
111                    $db->rollback();
112                    $errors[] = $e->getContent();
113                    break;
114                }
115            }
116            $db->commit();
117            break;
118        default:$step = 0; break;
119    }
120}
121
122?>
123
124<html>
125    <head>
126        <title>OpenWebReader Installation</title>
127        <style type="text/css">
128            body {
129                font-family:sans-serif;
130            }
131        </style>
132    </head>
133    <body>
134    <h1>Welcome to OpenWebReader installation process</h1>
135    <h3>List of steps :</h3>
136    <ul>
137        <li style="color:red;">ALWAYS check for errors at the bottom of the pages and try to repair them.</li>
138        <li>
139<?php if (0 === $step) echo '<strong><em>'; ?>
140            Edit the file ./conf-dist.php with your configuration and copy it to ../OWR/cfg.php. <a href="./install.php?step=1">GO</a>
141<?php if (0 === $step) echo '</em></strong>'; ?>
142        </li>
143        <li>
144<?php if (1 === $step) echo '<strong><em>'; ?>
145            Make the directories "../OWR/cache/" and "../OWR/logs/" accessibles in read/write for web server (example : chown -R www-data ../OWR/cache/ && chmod -R 700 ../OWR/cache/ && chown -R www-data ../OWR/logs/ && chmod -R 700 ../OWR/logs/). <a href="./install.php?step=2">GO</a>
146<?php if (1 === $step) echo '</em></strong>'; ?>
147        </li>
148        <li>
149<?php if (2 === $step) echo '<strong><em>'; ?>
150            Test database connexion and utf8 support. You will need to have already create the database with UTF-8 charset (example: "CREATE DATABASE openwebreader DEFAULT CHARACTER SET utf8"). At the moment, only MySQL is supported. <a href="./install.php?step=3">GO</a>
151<?php if (2 === $step) echo '</em></strong>'; ?>
152        </li>
153        <li>
154<?php if (3 === $step || (4 === $step && !$valid)) echo '<strong><em>'; ?>
155            Install database.
156<?php if(4 === $step && !$valid) {?>
157            WARNING IT WILL ERASE EXISTING TABLES, please <a href="./install.php?step=4&amp;valid=1">validate</a>
158<?php } else {?>
159            <a href="./install.php?step=4">GO</a>
160<?php }
161if (3 === $step || (4 === $step && !$valid)) echo '</em></strong>'; ?>
162        </li>
163        <li>
164<?php if (4 === $step && $valid) echo '<strong><em>'; ?>
165            Delete this directory (or rename this script to something.not_php : important if you don't want to have bad problems later)
166<?php if (4 === $step && $valid) echo '</em></strong>'; ?>
167        </li>
168    </ul>
169    <h3>Server checks :</h3>
170    <ul>
171<?php
172    foreach($messages as $message => $ok)
173    {
174        if(!is_array($ok))
175            echo '<li'.(!$ok ? ' style="color:red;font-weight:bold;"' : ' style="color:green;"').'>'.$message.'</li>';
176        else
177        {
178            echo '<li><strong>'.$message.' :</strong>';
179            echo '<ul>';
180            foreach($ok as $m=>$v)
181            {
182                echo '<li'.(!$v ? ' style="color:red;font-weight:bold;"' : ' style="color:green;"').'>'.$m.'</li>';
183            }
184            echo '</ul></li>';
185        }
186    }
187?>
188    </ul>
189    <h3>Status :</h3>
190<?php
191    if(!empty($errors))
192    {
193?>
194        <h4>Errors :</h4>
195        <ul>
196<?php
197        foreach($errors as $errors)
198        {
199            echo '<li style="color:red;font-weight:bold;">'.$errors.'</li>';
200        }
201        echo '<li><a href="./install.php?step='.$step.'">retry</a></li>';
202?>
203        </ul>
204<?php
205    }
206    elseif($step === 4)
207    {
208        if(!$valid)
209        {
210            echo '<p style="color:green;">Please <a href="./install.php?step=4&amp;valid=1">validate</a> erasing of existing tables</p>';
211        }
212        else echo '<p style="color:green;">Installation finished ! You can now delete this directory and <a href="../index.php?do=edituser">register an administrator</a></p>';
213    }
214    else
215    {
216        echo '<p style="color:green;">Cool ! No fatal errors. You can go next <a href="./install.php?step='.($step + 1).'">step</a></p>';
217    }
218?>
219    </body>
220</html>
Note: See TracBrowser for help on using the repository browser.