7 * LICENSE: This source file is licensed under the terms of the GNU General Public License.
9 * @package Magic3 Framework
10 * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
11 * @copyright Copyright 2006-2010 Magic3 Project.
12 * @license http://www.gnu.org/copyleft/gpl.html GPL License
13 * @version SVN: $Id: _installCheckenvWidgetContainer.php 3791 2010-11-08 07:07:17Z fishbone $
14 * @link http://www.magic3.org
16 require_once($gEnvManager->getCurrentWidgetContainerPath() . '/_installBaseWidgetContainer.php');
17 require_once($gEnvManager->getCurrentWidgetDbPath() . '/_installDb.php');
19 class _installCheckenvWidgetContainer extends _installBaseWidgetContainer
21 private $db; // DB接続オブジェクト
26 function __construct()
29 parent::__construct();
32 $this->db = new _installDB();
37 * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
38 * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
40 * @param RequestManager $request HTTPリクエスト処理クラス
41 * @param object $param 任意使用パラメータ。そのまま_assign()に渡る
42 * @return string テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
44 function _setTemplate($request, &$param)
46 return 'checkenv.tmpl.html';
51 * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
53 * @param RequestManager $request HTTPリクエスト処理クラス
54 * @param object $param 任意使用パラメータ。_setTemplate()と共有。
57 function _assign($request, &$param)
60 // PostgreSQLのPDOが使用可能かどうか
61 if (extension_loaded('pdo_pgsql')){
62 $status = $this->_('available');
63 $version = exec("psql --version", $output); // PostgreSQLバージョン取得
65 $words = explode(' ', $output[0]);
66 $version = $words[count($words)-1]; // 行末にはバージョン数値が存在する
67 if (empty($version)) $version = $this->_('version unknown');// バージョン不明
68 $status .= '(' . $version . ')';
69 $data = '<b><font color="green">' . $status . '</font></b>';
71 $status = $this->_('not available(pdo_pgsql not installed)'); // 利用不可(pdo_pgsqlがインストールされていません)
72 $data = '<b><font color="red">' . $status . '</font></b>';
74 $this->tmpl->addVar("_widget","current_postgresql_status", $data);
77 if (extension_loaded('pdo_mysql')){
78 $status = $this->_('available');
79 $version = exec("mysql_config --version"); // MySQLバージョン取得
80 if (empty($version)) $version = $this->_('version unknown');
81 $status .= '(' . $version . ')';
82 $data = '<b><font color="green">' . $status . '</font></b>';
84 $status = $this->_('not available(pdo_mysql not installed)'); // 利用不可(pdo_mysqlがインストールされていません)
85 $data = '<b><font color="red">' . $status . '</font></b>';
87 $this->tmpl->addVar("_widget","current_mysql_status", $data);
90 $data = '<b><font color="green">' . $this->_('5.1.0 more') . '</font></b>'; // 5.1.0 以上
91 $this->tmpl->addVar("_widget","config_php_version", $data);
93 $phpVer = phpversion();
94 if ($phpVer >= '5.1.0'){
95 $data = '<b><font color="green">' . $phpVer . '</font></b>';
97 $data = '<b><font color="red">' . $phpVer . '</font></b>';
99 $this->tmpl->addVar("_widget","current_php_version", $data);
102 $data = '<b><font color="green">' . M3_SYSTEM_MIN_MEMORY . $this->_('bytes(encouraged)') . '</font></b>';
103 $this->tmpl->addVar("_widget","config_memory_limit", $data);
105 $limit = ini_get('memory_limit');
106 if (convBytes($limit) >= convBytes(M3_SYSTEM_MIN_MEMORY)){
107 $data = '<b><font color="green">' . $limit . '</font></b>';
109 $data = '<b><font color="red">' . $limit . '</font></b>';
111 $this->tmpl->addVar("_widget","current_memory_limit", $data);
114 $data = '<b><font color="green">' . $this->_('off(encouraged)') . '</font></b>';
116 $this->tmpl->addVar("_widget","config_safe_mode", $data);
117 if (ini_get('safe_mode')){
118 //$data = '<b><font color="red">on</font></b>';
119 $data = '<b><font color="green">on</font></b>';
121 $data = '<b><font color="green">off</font></b>';
123 $this->tmpl->addVar("_widget","current_safe_mode", $data);
126 $data = '<b><font color="green">off</font></b>';
127 $this->tmpl->addVar("_widget","config_magic_quotes_gpc", $data);
128 if (get_magic_quotes_gpc()){
129 $data = '<b><font color="red">on</font></b>';
131 $data = '<b><font color="green">off</font></b>';
133 $this->tmpl->addVar("_widget","current_magic_quotes_gpc", $data);
135 $data = '<b><font color="green">off</font></b>';
136 $this->tmpl->addVar("_widget","config_magic_quotes_runtime", $data);
137 if (get_magic_quotes_runtime()){
138 $data = '<b><font color="red">on</font></b>';
140 $data = '<b><font color="green">off</font></b>';
142 $this->tmpl->addVar("_widget","current_magic_quotes_runtime", $data);
143 $data = '<b><font color="green">on</font></b>';
144 $this->tmpl->addVar("_widget","config_file_uploads", $data);
145 if (ini_get('file_uploads')){
146 $data = '<b><font color="green">on</font></b>';
148 $data = '<b><font color="red">off</font></b>';
150 $this->tmpl->addVar("_widget","current_file_uploads", $data);
152 // ######## PHP拡張オプションのインストール状況 ########
154 $data = '<b><font color="green">on</font></b>';
155 $this->tmpl->addVar("_widget","config_pdo", $data);
156 if (extension_loaded('pdo')){
157 $data = '<b><font color="green">on</font></b>';
159 $data = '<b><font color="red">off(' . $this->_('PDO not installed') . ')</font></b>'; // pdoがインストールされていません
161 $this->tmpl->addVar("_widget","current_pdo", $data);
164 $data = '<b><font color="green">on</font></b>';
165 $this->tmpl->addVar("_widget","config_mbstring", $data);
166 if (extension_loaded('mbstring')){
167 $data = '<b><font color="green">on</font></b>';
169 $data = '<b><font color="red">off</font></b>';
171 $this->tmpl->addVar("_widget","current_mbstring", $data);
172 // mbstring.encoding_translation
173 $data = '<b><font color="green">off</font></b>';
174 $this->tmpl->addVar("_widget","config_mbstring_tran", $data);
175 if (ini_get('mbstring.encoding_translation')){
176 $data = '<b><font color="red">on</font></b>';
178 $data = '<b><font color="green">off</font></b>';
180 $this->tmpl->addVar("_widget","current_mbstring_tran", $data);
183 $data = '<b><font color="green">on</font></b>';
184 $this->tmpl->addVar("_widget","config_zlib", $data);
185 if (extension_loaded('zlib')){
186 $data = '<b><font color="green">on</font></b>';
188 $data = '<b><font color="red">off</font></b>';
190 $this->tmpl->addVar("_widget","current_zlib", $data);
192 $data = '<b><font color="green">on</font></b>';
193 $this->tmpl->addVar("_widget","config_gd", $data);
194 if (extension_loaded('gd')){
195 $data = '<b><font color="green">on</font></b>';
197 $data = '<b><font color="red">off</font></b>';
199 $this->tmpl->addVar("_widget","current_gd", $data);
201 $data = '<b><font color="green">on</font></b>';
202 $this->tmpl->addVar("_widget","config_dom", $data);
203 if (extension_loaded('dom')){
204 $data = '<b><font color="green">on</font></b>';
206 $data = '<b><font color="red">off</font></b>';
208 $this->tmpl->addVar("_widget","current_dom", $data);
210 //$data = '<b><font color="green">offでも動作可</font></b>';
212 $this->tmpl->addVar("_widget","config_xml", $data);
213 if (extension_loaded('xml')){
214 $data = '<b><font color="green">on</font></b>';
216 $data = '<b><font color="red">off</font></b>';
218 $this->tmpl->addVar("_widget","current_xml", $data);
220 /* $data = '<b><font color="green">on</font></b>';
221 $this->tmpl->addVar("_widget","config_gettext", $data);
222 if (extension_loaded('gettext')){
223 $data = '<b><font color="green">on</font></b>';
225 $data = '<b><font color="red">off</font></b>';
227 $this->tmpl->addVar("_widget","current_gettext", $data);*/
230 $data = $this->gConfig->configFilePath();
231 $this->tmpl->addVar("_widget","current_config_path", $data);
233 // 設定ファイルが書き込み可能かどうかチェック
234 $data = '<b><font color="green">' . $this->_('writable') . '</font></b>';
235 $this->tmpl->addVar("_widget","config_access", $data);
237 if ($this->gConfig->isConfigDirWritable()){
238 if ($this->gConfig->isConfigFileWritable()){
239 $data = '<b><font color="green">' . $this->_('writable') . '</font></b>';
241 $data = '<b><font color="red">' . $this->_('not writable') . '</font></b>';
244 $data = '<b><font color="red">' . $this->_('directory not writable') . '</font></b>'; // ディレクトリ書き込み不可
246 $this->tmpl->addVar("_widget","current_access", $data);
249 $data = '<b><font color="green">on</font></b>';
250 $this->tmpl->addVar("_widget","config_sess_use_cookies", $data);
251 if (ini_get('session.use_cookies')){
252 $data = '<b><font color="green">on</font></b>';
254 $data = '<b><font color="red">off</font></b>';
256 $this->tmpl->addVar("_widget","current_sess_use_cookies", $data);
258 // ##### セッション関係 #####
260 $data = '<b><font color="green">off</font></b>';
261 $this->tmpl->addVar("_widget","config_sess_use_trans_sid", $data);
262 if (ini_get('session.use_trans_sid')){
263 $data = '<b><font color="red">on</font></b>';
265 $data = '<b><font color="green">off</font></b>';
267 $this->tmpl->addVar("_widget","current_sess_use_trans_sid", $data);
270 $data = '<b><font color="green">off</font></b>';
271 $this->tmpl->addVar("_widget","config_sess_auto_start", $data);
272 if (ini_get('session.auto_start')){
273 $data = '<b><font color="red">on</font></b>';
275 $data = '<b><font color="green">off</font></b>';
277 $this->tmpl->addVar("_widget","current_sess_auto_start", $data);
280 $sp = ini_get('session.save_path');
281 $this->tmpl->addVar("_widget","current_session_path", $sp);
283 //$data = '<b><font color="green">どちらでも可</font></b>';
285 $this->tmpl->addVar("_widget","config_session_access", $data);
287 if (@is_writable($sp)){
288 $data = '<b><font color="green">' . $this->_('writable') . '</font></b>';
290 $data = '<b><font color="green">' . $this->_('not writable') . '</font></b>';
292 $this->tmpl->addVar("_widget","current_session_access", $data);
295 $data = '<b><font color="green">' . $this->_('enable') . '</font></b>';
296 $this->tmpl->addVar("_widget","config_session_id", $data);
299 $data = '<b><font color="red">' . $this->_('disable') . '</font></b>';
301 $data = '<b><font color="green">' . $sid . '</font></b>';
303 $this->tmpl->addVar("_widget","current_session_id", $data);
306 //$path = M3_SYSTEM_WORK_DIR_PATH;
307 $path = $this->gEnv->getWorkDirPath();
308 $this->tmpl->addVar("_widget","current_tmp_dir", $path);
310 $data = '<b><font color="green">' . $this->_('writable') . '</font></b>';
311 $this->tmpl->addVar("_widget","config_tmp_dir_access", $data);
313 if (is_writable($path)){
314 $data = '<b><font color="green">' . $this->_('writable') . '</font></b>';
316 $data = '<b><font color="red">' . $this->_('not writable') . '</font></b>';
318 $this->tmpl->addVar("_widget","current_tmp_dir_access", $data);
321 $path = $this->gEnv->getResourcePath();
322 $this->tmpl->addVar("_widget","current_resource_dir", $path);
324 $data = '<b><font color="green">' . $this->_('writable') . '</font></b>';
325 $this->tmpl->addVar("_widget","config_resource_dir_access", $data);
327 if (is_writable($path)){
328 $data = '<b><font color="green">' . $this->_('writable') . '</font></b>';
330 $data = '<b><font color="red">' . $this->_('not writable') . '</font></b>';
332 $this->tmpl->addVar("_widget","current_resource_dir_access", $data);
335 $localeText = array();
336 $localeText['title_check_env'] = $this->_('Check Install Environment');
337 $localeText['label_check_item'] = $this->_('Check Item');
338 $localeText['label_required_value'] = $this->_('Required Value');
339 $localeText['label_current_value'] = $this->_('Current Value');
340 $localeText['label_php_version'] = $this->_('PHP Version');
341 $localeText['label_memory_limit'] = $this->_('Memory Limit(bytes)'); // 最大メモリ量(バイト)
342 $localeText['label_permit_upload'] = $this->_('Permit file uploading'); // ファイルアップロード許可
343 $localeText['label_session_path'] = $this->_('Session Path'); // セッション保存パス
344 $localeText['label_session_path_permission'] = $this->_('Session Path Permission');// セッション保存パスのアクセス権
345 $localeText['label_session_id'] = $this->_('Session ID');// セッションID
346 $localeText['label_tmp_dir'] = $this->_('Temporary Directory(Install Use)');// 一時ディレクトリ(インストール時に使用する一時ディレクトリ)
347 $localeText['label_tmp_dir_permission'] = $this->_('Temporary Directory Permission');// 一時ディレクトリのアクセス権
348 $localeText['label_msg_dir_permission'] = $this->_('If directory is not writable, change permission to write or chenge directory to be writable.');// 書き込み不可の場合は書き込み可能なディレクトリあるいはアクセス権に設定する必要あり
349 $localeText['label_magic3_config_file'] = $this->_('Magic3 Config File'); // Magic3設定ファイルのパス
350 $localeText['label_magic3_config_file_permission'] = $this->_('Magic3 Config File Permission');// Magic3設定ファイルのアクセス権
351 $localeText['label_resource_dir'] = $this->_('Resource Directory(for Image files etc)');// リソース(画像等)格納ディレクトリ
352 $localeText['label_resource_dir_permission'] = $this->_('Resource Directory Permission');// リソース(画像等)格納ディレクトリのアクセス権
353 $this->setLocaleText($localeText);