├── .editorconfig ├── .gitignore ├── .tx └── config ├── LICENSE ├── README.md └── check ├── .htaccess ├── assets ├── hbg.jpg ├── headline.gif ├── logo.gif ├── script.js ├── select.gif ├── style.css └── test.lock ├── controller ├── .htaccess ├── composer.php ├── contao2.php ├── contao3.php ├── contao4.php ├── contao45.php ├── file-permissions.php ├── index.php ├── live-update.php ├── repository.php └── validator.php ├── i18n ├── cs.php ├── de.php ├── en.php ├── es.php ├── fr.php ├── it.php ├── ja.php ├── nl.php ├── pt.php ├── rm.php ├── ru.php ├── sl.php ├── sr.php ├── sv.php └── zh.php ├── includes ├── .htaccess ├── bootstrap.php ├── translator.php └── util.php ├── index.php ├── versions └── .htaccess └── views ├── .htaccess ├── composer.phtml ├── contao2.phtml ├── contao3.phtml ├── contao4.phtml ├── contao45.phtml ├── file-permissions.phtml ├── index.phtml ├── live-update.phtml ├── repository.phtml └── validator.phtml /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | [*.{css,js,php}] 4 | indent_style = tab 5 | 6 | [*.phtml] 7 | indent_style = space 8 | indent_size = 2 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /check/versions/*.json 2 | -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | type = PHP_ARRAY 4 | 5 | [contao-check.i18n] 6 | source_file = check/i18n/en.php 7 | source_lang = en 8 | file_filter = check/i18n/.php 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. 166 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Contao check 2 | ============ 3 | 4 | With this script you can check the Contao Open Source CMS system requirements, 5 | validate an existing Contao installation or set up a new Contao installation. 6 | 7 | 8 | ## What's included 9 | 10 | Here is a short overview of what you can do with the script: 11 | 12 | * Check which Contao versions can be installed; 13 | * check if PHP is allowed to write files on the server; 14 | * check if the Live Update service can be used; 15 | * check if the Composer package manager can be used; 16 | * check if the extension repository can be used; 17 | * install the latest Contao version or Contao LTS version; 18 | * validate an existing Contao installation. 19 | 20 | 21 | ## How to use 22 | 23 | Upload the `/check` folder to your server where you want to install Contao. 24 | To validate an existing installation, upload the `/check` folder to the root of 25 | your Contao installation. Then open it in a web browser. 26 | 27 | Be aware that validation of an existing installation is mainly designed for 28 | installations created by using this tool or officially released archives. Therefore, 29 | validation just checks the presence and contents of files against a known list of 30 | those being part of an official release. This way this tool can help to check if 31 | everything needed by an official release has been successfully deployed. 32 | 33 | 34 | ## Web installer 35 | 36 | The web installer requires the PHP extensions "curl" and "Zip" to be installed 37 | in order to download and extract the latest Contao release. 38 | -------------------------------------------------------------------------------- /check/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | # Turn off any rewrites from parent folders 3 | RewriteEngine Off 4 | 5 | -------------------------------------------------------------------------------- /check/assets/hbg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/contao/check/3624ae34537089437f3a9422f4f3f599483d6900/check/assets/hbg.jpg -------------------------------------------------------------------------------- /check/assets/headline.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/contao/check/3624ae34537089437f3a9422f4f3f599483d6900/check/assets/headline.gif -------------------------------------------------------------------------------- /check/assets/logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/contao/check/3624ae34537089437f3a9422f4f3f599483d6900/check/assets/logo.gif -------------------------------------------------------------------------------- /check/assets/select.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/contao/check/3624ae34537089437f3a9422f4f3f599483d6900/check/assets/select.gif -------------------------------------------------------------------------------- /check/assets/style.css: -------------------------------------------------------------------------------- 1 | /* Contao 3 reset style sheet */ 2 | body,div,h1,h2,h3,h4,h5,h6,p,blockquote,pre,code,ol,ul,li,dl,dt,dd,table,th,td,form,fieldset,legend,input,textarea{margin:0;padding:0}table{border-spacing:0;border-collapse:collapse}caption,th,td{text-align:left;text-align:start;vertical-align:top}abbr,acronym{font-variant:normal;border-bottom:1px dotted #666;cursor:help}blockquote,q{quotes:none}fieldset,img{border:0}ul{list-style-type:none}sup{vertical-align:text-top}sub{vertical-align:text-bottom}del{text-decoration:line-through}ins{text-decoration:none}body{font:11px/1.25 Verdana,sans-serif;color:#666966}input,button,textarea,select{font-family:inherit;font-size:99%;font-weight:inherit}pre,code{font:12px Monaco,monospace}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:bold}h1{font-size:22px}h2{font-size:20px}h3{font-size:18px}table{font-size:inherit}caption,th{font-weight:bold}a{color:#00f}h1,h2,h3,h4,h5,h6{margin-top:1em}h1,h2,h3,h4,h5,h6,p,pre,blockquote,table,ol,ul,form{margin-bottom:11px} 3 | 4 | /* Contao stylect */ 5 | .styled_select{display:inline;position:absolute;margin-top:1px;background:#fff;border:1px solid #b8b8b8;border-radius:3px;padding-left:6px;font-size:11px;text-align:left;line-height:20px;white-space:nowrap;overflow:hidden}.styled_select.focused{background-color:#ebfdd7}.styled_select.disabled{color:#bbb;background-color:#f9f9f9;border:1px solid #c8c8c8}.styled_select b{display:block;width:15px;height:100%;position:absolute;top:0;right:0;border-left:1px solid #b8b8b8;background:#eee;border-radius:0 3px 3px 0;background-image:-moz-linear-gradient(bottom,#ccc 0,#eee 60%);background-image:-webkit-linear-gradient(bottom,#ccc 0,#eee 60%);background-image:-o-linear-gradient(bottom,#ccc 0,#eee 60%);background-image:-ms-linear-gradient(bottom,#ccc 0,#eee 60%);background-image:linear-gradient(bottom,#ccc 0,#eee 60%)}.styled_select b i{display:block;width:100%;height:100%;background:url("select.gif") center center no-repeat} 6 | 7 | /* Contao buttons */ 8 | .button{display:inline-block;padding:4px 15px 4px 14px;margin-bottom:0;text-align:center;vertical-align:middle;line-height:16px;font-size:11px;color:#444;cursor:pointer;border:1px solid #ccc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#ececec;background-image:-moz-linear-gradient(top,#fff,#ececec);background-image:-webkit-linear-gradient(top,#fff,#ececec);background-image:-ms-linear-gradient(top,#fff,#ececec);background-image:-o-linear-gradient(top,#fff,#ececec);background-image:linear-gradient(to bottom,#fff,#ececec);background-repeat:repeat-x;-moz-transition:background .15s linear;-webkit-transition:background .15s linear;-o-transition:background .15s linear;transition:background .15s linear}.button:hover{text-decoration:none;background-position:0 -15px!important}.button:active{background-color:#e6e6e6;background-position:0 -30px!important}.button.orange{background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);border-color:#f89406;color:#fff}.button.orange:active{background-color:#f28f04} 9 | 10 | /* Contao Check */ 11 | body{background:#f5f5f5 url("hbg.jpg") repeat-x}#wrapper{width:758px;margin:18px auto;padding-bottom:6px;background:#fff;box-shadow:0 3px 6px #ccc;border:1px solid #bbb;border-radius:3px;position:relative}@media(max-width:767px){#wrapper{width:auto;margin-left:3px;margin-right:3px}}.row{padding:0 18px}h1{margin:1px !important;padding:4px 8px 6px;background:#b3b6b3 url("headline.gif") repeat-x;border-radius:3px 3px 0 0;font-size:12px;color:#fff}h2{padding:8px 0 24px 42px;background:url("logo.gif") left 1px no-repeat;border-bottom:1px solid #ddd;font-size:14px;color:#8ab858}h3{margin:24px 0 9px;font-size:12px}ul{list-style:circle outside}li{margin-left:2em;margin-bottom:.5em}.validate li{margin-bottom:0.1em}a{color:#666966;text-decoration:none}a:hover{text-decoration:underline}.error{color:#c00}.confirm{color:#8ab858}.explain{font-size:10px;line-height:1.5;color:#808080}.explain code{font-size:10px}.large{margin:24px 0 12px;font-size:150%}.back{margin:-6px 0 6px;padding-right:15px;text-align:right}.back a{color:#999}.mt{margin-top:27px}form{position:relative}.select{width:200px}.versions{margin-bottom:9px} 12 | -------------------------------------------------------------------------------- /check/assets/test.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/contao/check/3624ae34537089437f3a9422f4f3f599483d6900/check/assets/test.lock -------------------------------------------------------------------------------- /check/controller/.htaccess: -------------------------------------------------------------------------------- 1 | order deny,allow 2 | deny from all -------------------------------------------------------------------------------- /check/controller/composer.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class Composer 20 | { 21 | const PHP_VERSION = '5.3.4'; 22 | 23 | /** 24 | * @var boolean 25 | */ 26 | protected $filePermissions; 27 | 28 | /** 29 | * @var boolean 30 | */ 31 | protected $available = true; 32 | 33 | /** 34 | * Execute the command 35 | */ 36 | public function run() 37 | { 38 | $this->filePermissions = $this->checkFilePermissions(); 39 | 40 | include __DIR__ . '/../views/composer.phtml'; 41 | } 42 | 43 | /** 44 | * Return the availability of the Composer package manager 45 | * 46 | * @return boolean True if the Composer package manager can be used 47 | */ 48 | public function isAvailable() 49 | { 50 | return $this->available; 51 | } 52 | 53 | /** 54 | * Check whether the PHP version meets the requirements 55 | * 56 | * @return boolean True if the PHP version meets the requirements 57 | */ 58 | public function hasPhp() 59 | { 60 | if (version_compare(phpversion(), static::PHP_VERSION, '>=')) { 61 | return true; 62 | } 63 | 64 | $this->available = false; 65 | 66 | return false; 67 | } 68 | 69 | /** 70 | * Check whether the PHP Phar extension is available 71 | * 72 | * @return boolean True if the PHP Phar extension is available 73 | */ 74 | public function hasPhar() 75 | { 76 | if (extension_loaded('Phar')) { 77 | return true; 78 | } 79 | 80 | $this->available = false; 81 | 82 | return false; 83 | } 84 | 85 | /** 86 | * Check whether the XCache extension is loaded 87 | * 88 | * @return boolean True if the PHP Phar extension is loaded 89 | */ 90 | public function hasXCache() 91 | { 92 | if (!extension_loaded('XCache')) { 93 | return false; 94 | } 95 | 96 | $this->available = false; 97 | 98 | return true; 99 | } 100 | 101 | /** 102 | * Check whether the PHP cURL extension is available 103 | * 104 | * @return boolean True if the PHP cURL extension is available 105 | */ 106 | public function hasCurl() 107 | { 108 | if (function_exists('curl_init')) { 109 | return true; 110 | } 111 | 112 | $this->available = false; 113 | 114 | return false; 115 | } 116 | 117 | /** 118 | * Check whether the PHP APC extension is installed 119 | * 120 | * @return boolean True if the PHP APC extension is installed 121 | */ 122 | public function hasApc() 123 | { 124 | if (!extension_loaded('apc') || extension_loaded('apcu')) { 125 | return false; 126 | } 127 | 128 | $this->available = false; 129 | 130 | return true; 131 | } 132 | 133 | /** 134 | * Check whether the PHP Suhosin extension is enabled 135 | * 136 | * @return boolean True if the PHP Suhosin extension is enabled 137 | */ 138 | public function hasSuhosin() 139 | { 140 | $suhosin = ini_get('suhosin.executor.include.whitelist'); 141 | 142 | if ($suhosin === false) { 143 | return false; 144 | } 145 | 146 | $allowed = array_map('trim', explode(',', $suhosin)); 147 | 148 | // The previous check returned false positives for e.g. "phar." 149 | if (in_array('phar', $allowed) || in_array('phar://', $allowed)) { 150 | return false; 151 | } 152 | 153 | $this->available = false; 154 | 155 | return true; 156 | } 157 | 158 | /** 159 | * Check whether "allow_url_fopen" is enabled 160 | * 161 | * @return boolean True if "allow_url_fopen" is enabled 162 | */ 163 | public function hasAllowUrlFopen() 164 | { 165 | if (ini_get('allow_url_fopen')) { 166 | return true; 167 | } 168 | 169 | $this->available = false; 170 | 171 | return false; 172 | } 173 | 174 | /** 175 | * Return true if the PHP process is allowed to create files 176 | * 177 | * @return boolean True if the PHP process is allowed to create files 178 | */ 179 | public function canCreateFiles() 180 | { 181 | if (!$this->filePermissions) { 182 | return true; 183 | } 184 | 185 | $this->available = false; 186 | 187 | return false; 188 | } 189 | 190 | /** 191 | * Check whether the PHP shell_exec function is available 192 | * 193 | * @return boolean True if the PHP shell_exec function is available 194 | */ 195 | public function hasShellExec() 196 | { 197 | if (function_exists('shell_exec')) { 198 | return true; 199 | } 200 | 201 | return false; 202 | } 203 | 204 | /** 205 | * Check whether the PHP proc_open function is available 206 | * 207 | * @return boolean True if the PHP proc_open function is available 208 | */ 209 | public function hasProcOpen() 210 | { 211 | if (function_exists('proc_open')) { 212 | return true; 213 | } 214 | 215 | return false; 216 | } 217 | 218 | /** 219 | * Return true if the PHP process is allowed to create files 220 | * 221 | * @return boolean True if the PHP process is allowed to create files 222 | */ 223 | protected function checkFilePermissions() 224 | { 225 | $permissions = new FilePermissions; 226 | 227 | if ($permissions->hasSafeMode()) { 228 | return true; 229 | } 230 | 231 | if (function_disabled('posix_getpwuid')) { 232 | return true; 233 | } 234 | 235 | if (!$permissions->canCreateFolder()) { 236 | return true; 237 | } 238 | 239 | if (!$permissions->canCreateFile()) { 240 | return true; 241 | } 242 | 243 | return false; 244 | } 245 | } 246 | -------------------------------------------------------------------------------- /check/controller/contao2.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Contao2 18 | { 19 | const PHP_VERSION = '5.2.7'; 20 | 21 | /** 22 | * @var boolean 23 | */ 24 | protected $compatible = true; 25 | 26 | /** 27 | * Execute the command 28 | */ 29 | public function run() 30 | { 31 | include __DIR__ . '/../views/contao2.phtml'; 32 | } 33 | 34 | /** 35 | * Return the Contao 2.x compatibility of the environment 36 | * 37 | * @return boolean True if Contao 2.x can be run 38 | */ 39 | public function isCompatible() 40 | { 41 | return $this->compatible; 42 | } 43 | 44 | /** 45 | * Check whether the PHP version meets the requirements 46 | * 47 | * @return boolean True if the PHP version meets the requirements 48 | */ 49 | public function hasPhp() 50 | { 51 | if (version_compare(phpversion(), static::PHP_VERSION, '>=')) { 52 | return true; 53 | } 54 | 55 | $this->compatible = false; 56 | 57 | return false; 58 | } 59 | 60 | /** 61 | * Check whether the PHP version is lower than PHP 7 62 | * 63 | * @return boolean True if the PHP version is lower than PHP 7 64 | */ 65 | public function hasNotPhp7() 66 | { 67 | if (version_compare(phpversion(), '7.0.0', '<')) { 68 | return true; 69 | } 70 | 71 | $this->compatible = false; 72 | 73 | return false; 74 | } 75 | 76 | /** 77 | * Check whether the PHP GDlib extension is available 78 | * 79 | * @return boolean True if the PHP GDlib extension is available 80 | */ 81 | public function hasGd() 82 | { 83 | if (extension_loaded('gd')) { 84 | return true; 85 | } 86 | 87 | $this->compatible = false; 88 | 89 | return false; 90 | } 91 | 92 | /** 93 | * Check whether the PHP DOM extension is available 94 | * 95 | * @return boolean True if the PHP DOM extension is available 96 | */ 97 | public function hasDom() 98 | { 99 | if (extension_loaded('dom')) { 100 | return true; 101 | } 102 | 103 | $this->compatible = false; 104 | 105 | return false; 106 | } 107 | 108 | /** 109 | * Check whether the PHP xmlreader extension is available 110 | * 111 | * @return boolean True if the PHP xmlreader extension is available 112 | */ 113 | public function hasXmlReader() 114 | { 115 | if (extension_loaded('xmlreader')) { 116 | return true; 117 | } 118 | 119 | $this->compatible = false; 120 | 121 | return false; 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /check/controller/contao3.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Contao3 18 | { 19 | const PHP_VERSION = '5.4.0'; 20 | 21 | /** 22 | * @var boolean 23 | */ 24 | protected $compatible = true; 25 | 26 | /** 27 | * Execute the command 28 | */ 29 | public function run() 30 | { 31 | include __DIR__ . '/../views/contao3.phtml'; 32 | } 33 | 34 | /** 35 | * Return the Contao 3.x compatibility of the environment 36 | * 37 | * @return boolean True if Contao 3.x can be run 38 | */ 39 | public function isCompatible() 40 | { 41 | return $this->compatible; 42 | } 43 | 44 | /** 45 | * Check whether the PHP version meets the requirements 46 | * 47 | * @return boolean True if the PHP version meets the requirements 48 | */ 49 | public function hasPhp() 50 | { 51 | if (version_compare(phpversion(), static::PHP_VERSION, '>=')) { 52 | return true; 53 | } 54 | 55 | $this->compatible = false; 56 | 57 | return false; 58 | } 59 | 60 | /** 61 | * Check whether the PHP GDlib extension is available 62 | * 63 | * @return boolean True if the PHP GDlib extension is available 64 | */ 65 | public function hasGd() 66 | { 67 | if (extension_loaded('gd')) { 68 | return true; 69 | } 70 | 71 | $this->compatible = false; 72 | 73 | return false; 74 | } 75 | 76 | /** 77 | * Check whether the PHP DOM extension is available 78 | * 79 | * @return boolean True if the PHP DOM extension is available 80 | */ 81 | public function hasDom() 82 | { 83 | if (extension_loaded('dom')) { 84 | return true; 85 | } 86 | 87 | $this->compatible = false; 88 | 89 | return false; 90 | } 91 | 92 | /** 93 | * Check whether the PHP xmlreader extension is available 94 | * 95 | * @return boolean True if the PHP xmlreader extension is available 96 | */ 97 | public function hasXmlReader() 98 | { 99 | if (extension_loaded('xmlreader')) { 100 | return true; 101 | } 102 | 103 | $this->compatible = false; 104 | 105 | return false; 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /check/controller/contao4.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Contao4 18 | { 19 | const PHP_VERSION = '5.6.0'; 20 | 21 | /** 22 | * @var boolean 23 | */ 24 | protected $compatible = true; 25 | 26 | /** 27 | * Execute the command 28 | */ 29 | public function run() 30 | { 31 | include __DIR__ . '/../views/contao4.phtml'; 32 | } 33 | 34 | /** 35 | * Return the Contao 4.x compatibility of the environment 36 | * 37 | * @return boolean True if Contao 4.x can be run 38 | */ 39 | public function isCompatible() 40 | { 41 | return $this->compatible; 42 | } 43 | 44 | /** 45 | * Executes all compatibility checks. 46 | * 47 | * @return boolean True if Contao 4.x can be run 48 | */ 49 | public function checkCompatibility() 50 | { 51 | if (!$this->hasPhp()) { 52 | return false; 53 | } 54 | 55 | if (!$this->hasGraphicsLib()) { 56 | return false; 57 | } 58 | 59 | if (!$this->hasDom()) { 60 | return false; 61 | } 62 | 63 | if (!$this->hasIntl()) { 64 | return false; 65 | } 66 | 67 | if (!$this->canWriteTmpDir()) { 68 | return false; 69 | } 70 | 71 | if (!$this->canUseSymlink()) { 72 | return false; 73 | } 74 | 75 | if (!$this->canCreateSymlinks()) { 76 | return false; 77 | } 78 | 79 | if (!$this->hasXmlReader()) { 80 | return false; 81 | } 82 | 83 | if (!$this->canCreateFileLocks()) { 84 | return false; 85 | } 86 | 87 | return true; 88 | } 89 | 90 | /** 91 | * Check whether the PHP version meets the requirements 92 | * 93 | * @return boolean True if the PHP version meets the requirements 94 | */ 95 | public function hasPhp() 96 | { 97 | if (version_compare(phpversion(), static::PHP_VERSION, '>=')) { 98 | return true; 99 | } 100 | 101 | $this->compatible = false; 102 | 103 | return false; 104 | } 105 | 106 | /** 107 | * Check whether any of the supported graphics libraries are available 108 | * 109 | * @return boolean True if any of the supported graphics libraries are available 110 | */ 111 | public function hasGraphicsLib() 112 | { 113 | if (function_exists('gd_info')) { 114 | if (version_compare(GD_VERSION, '2.0.1', '>')) { 115 | return true; 116 | } 117 | } 118 | 119 | if (class_exists('Imagick')) { 120 | return true; 121 | } 122 | 123 | if (class_exists('Gmagick')) { 124 | return true; 125 | } 126 | 127 | $this->compatible = false; 128 | 129 | return false; 130 | } 131 | 132 | /** 133 | * Check whether the PHP DOM extension is available 134 | * 135 | * @return boolean True if the PHP DOM extension is available 136 | */ 137 | public function hasDom() 138 | { 139 | if (extension_loaded('dom')) { 140 | return true; 141 | } 142 | 143 | $this->compatible = false; 144 | 145 | return false; 146 | } 147 | 148 | /** 149 | * Check whether the PHP intl extension is available 150 | * 151 | * @return boolean True if the PHP intl extension is available 152 | */ 153 | public function hasIntl() 154 | { 155 | if (extension_loaded('intl')) { 156 | return true; 157 | } 158 | 159 | $this->compatible = false; 160 | 161 | return false; 162 | } 163 | 164 | /** 165 | * Check whether the system tmp directory is writeable 166 | * 167 | * @return boolean True if the system tmp directory is writeable 168 | */ 169 | public function canWriteTmpDir() 170 | { 171 | if (is_writable(sys_get_temp_dir())) { 172 | return true; 173 | } 174 | 175 | $this->compatible = false; 176 | 177 | return false; 178 | } 179 | 180 | /** 181 | * Check whether the PHP symlink() function is available 182 | * 183 | * @return boolean True if the PHP symlink() function is available 184 | */ 185 | public function canUseSymlink() 186 | { 187 | if (function_exists('symlink')) { 188 | return true; 189 | } 190 | 191 | $this->compatible = false; 192 | 193 | return false; 194 | } 195 | 196 | /** 197 | * Check whether a symlink can successfully be created 198 | * 199 | * @return boolean True if a symlink was successfully created 200 | */ 201 | public function canCreateSymlinks() 202 | { 203 | @unlink('test'); 204 | $result = @symlink(__FILE__, 'test'); 205 | @unlink('test'); 206 | 207 | if (true === $result) { 208 | return true; 209 | } 210 | 211 | $this->compatible = false; 212 | 213 | return false; 214 | } 215 | 216 | /** 217 | * Check whether the PHP xmlreader extension is available 218 | * 219 | * @return boolean True if the PHP xmlreader extension is available 220 | */ 221 | public function hasXmlReader() 222 | { 223 | if (extension_loaded('xmlreader')) { 224 | return true; 225 | } 226 | 227 | $this->compatible = false; 228 | 229 | return false; 230 | } 231 | 232 | /** 233 | * Check whether PHP can get file locks on existing files 234 | * 235 | * @return boolean True if a file lock can be established 236 | */ 237 | public function canCreateFileLocks() 238 | { 239 | $file = __DIR__ . '/../assets/test.lock'; 240 | 241 | $handle = @fopen($file, 'r+') ?: @fopen($file, 'r'); 242 | 243 | if ($handle && flock($handle, LOCK_EX | LOCK_NB)) { 244 | flock($handle, LOCK_UN | LOCK_NB); 245 | return true; 246 | } 247 | 248 | $this->compatible = false; 249 | 250 | return false; 251 | } 252 | } 253 | -------------------------------------------------------------------------------- /check/controller/contao45.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class Contao45 extends Contao4 20 | { 21 | const PHP_VERSION = '7.1.0'; 22 | const ICU_VERSION = '4.2.1'; 23 | 24 | /** 25 | * @var string 26 | */ 27 | protected $icuVersion = null; 28 | 29 | /** 30 | * Execute the command 31 | */ 32 | public function run() 33 | { 34 | include __DIR__ . '/../views/contao45.phtml'; 35 | } 36 | 37 | /** 38 | * Returns the detected ICU version 39 | * 40 | * @return string 41 | */ 42 | public function getIcuVersion() 43 | { 44 | return $this->icuVersion; 45 | } 46 | 47 | /** 48 | * Executes all compatibility checks. 49 | * 50 | * @return boolean True if Contao 4.5 can be run 51 | */ 52 | public function checkCompatibility() 53 | { 54 | parent::checkCompatibility(); 55 | 56 | if (!$this->compatible) { 57 | return false; 58 | } 59 | 60 | if (!$this->hasIcu()) { 61 | return false; 62 | } 63 | 64 | return true; 65 | } 66 | 67 | /** 68 | * Checks the minimum version of the ICU library 69 | * 70 | * @return boolean True if the version of the ICU library is sufficiently high 71 | */ 72 | public function hasIcu() 73 | { 74 | if (extension_loaded('intl')) { 75 | 76 | if (defined('INTL_ICU_VERSION')) { 77 | $this->icuVersion = INTL_ICU_VERSION; 78 | } else { 79 | $reflector = new \ReflectionExtension('intl'); 80 | ob_start(); 81 | $reflector->info(); 82 | $output = strip_tags(ob_get_clean()); 83 | preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches); 84 | $this->icuVersion = $matches[1]; 85 | } 86 | 87 | if (version_compare($this->icuVersion, static::ICU_VERSION, '>=')) { 88 | return true; 89 | } 90 | } 91 | 92 | $this->compatible = false; 93 | 94 | return false; 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /check/controller/file-permissions.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class FilePermissions 18 | { 19 | /** 20 | * @var string 21 | */ 22 | protected $folderOwner; 23 | 24 | /** 25 | * @var string 26 | */ 27 | protected $testFolderOwner; 28 | 29 | /** 30 | * @var integer 31 | */ 32 | protected $testFolderChmod; 33 | 34 | /** 35 | * @var string 36 | */ 37 | protected $fileOwner; 38 | 39 | /** 40 | * @var string 41 | */ 42 | protected $testFileOwner; 43 | 44 | /** 45 | * @var integer 46 | */ 47 | protected $testFileChmod; 48 | 49 | /** 50 | * @var boolean 51 | */ 52 | protected $failure = false; 53 | 54 | /** 55 | * Execute the command 56 | */ 57 | public function run() 58 | { 59 | include __DIR__ . '/../views/file-permissions.phtml'; 60 | } 61 | 62 | /** 63 | * Return true if the PHP process could not create the file 64 | * 65 | * @return boolean True if the PHP process could not create the file 66 | */ 67 | public function failed() 68 | { 69 | return $this->failure; 70 | } 71 | 72 | /** 73 | * Check whether the PHP safe_mode is enabled 74 | * 75 | * @return boolean True if the PHP safe_mode is enabled 76 | */ 77 | public function hasSafeMode() 78 | { 79 | $safe_mode = ini_get('safe_mode'); 80 | 81 | if ($safe_mode == '' || $safe_mode == 0 || $safe_mode == 'Off') { 82 | return false; 83 | } 84 | 85 | $this->failure = true; 86 | 87 | return true; 88 | } 89 | 90 | /** 91 | * Return the owner of the "check" folder 92 | * 93 | * @return string The owner name 94 | */ 95 | public function getFolderOwner() 96 | { 97 | return $this->folderOwner['name']; 98 | } 99 | 100 | /** 101 | * Return the owner of the "test" folder 102 | * 103 | * @return string The owner name 104 | */ 105 | public function getTestFolderOwner() 106 | { 107 | return $this->testFolderOwner['name']; 108 | } 109 | 110 | /** 111 | * Return the permissions of the "test" folder 112 | * 113 | * @return integer The CHMOD settings 114 | */ 115 | public function getTestFolderChmod() 116 | { 117 | return $this->testFolderChmod; 118 | } 119 | 120 | /** 121 | * Check whether PHP is allowed to create folders 122 | * 123 | * @return boolean True if PHP is allowed create folders 124 | */ 125 | public function canCreateFolder() 126 | { 127 | $this->folderOwner = posix_getpwuid(@fileowner(dirname(__FILE__))); 128 | 129 | // Try to create a folder 130 | if (@mkdir('test') !== false) { 131 | $options = defined('PHP_WINDOWS_VERSION_BUILD') ? array(777) : array(775, 755, 770, 750, 705); 132 | 133 | // Check the folder permissions 134 | clearstatcache(); 135 | $this->testFolderChmod = decoct(@fileperms('test') & 511); 136 | $this->testFolderOwner = posix_getpwuid(@fileowner('test')); 137 | 138 | // Check the folder owner 139 | if (in_array($this->testFolderChmod, $options)) { 140 | if ($this->folderOwner['name'] == $this->testFolderOwner['name']) { 141 | @rmdir('test'); 142 | 143 | return true; 144 | } 145 | } 146 | } 147 | 148 | @rmdir('test'); 149 | $this->failure = true; 150 | 151 | return false; 152 | } 153 | 154 | /** 155 | * Return the owner of the "check/controller/file-permissions.php" file 156 | * 157 | * @return string The owner name 158 | */ 159 | public function getFileOwner() 160 | { 161 | return $this->fileOwner['name']; 162 | } 163 | 164 | /** 165 | * Return the owner of the "test.txt" file 166 | * 167 | * @return string The owner name 168 | */ 169 | public function getTestFileOwner() 170 | { 171 | return $this->testFileOwner['name']; 172 | } 173 | 174 | /** 175 | * Return the permissions of the "test.txt" file 176 | * 177 | * @return integer The CHMOD settings 178 | */ 179 | public function getTestFileChmod() 180 | { 181 | return $this->testFileChmod; 182 | } 183 | 184 | /** 185 | * Check whether PHP is allowed to create files 186 | * 187 | * @return boolean True if PHP is allowed create files 188 | */ 189 | public function canCreateFile() 190 | { 191 | $this->fileOwner = posix_getpwuid(@fileowner(__FILE__)); 192 | 193 | // Try to create a file 194 | if (@file_put_contents('test.txt', '') !== false) { 195 | $options = defined('PHP_WINDOWS_VERSION_BUILD') ? array(666) : array(664, 644, 660, 640, 604); 196 | 197 | // Check the file permissions 198 | clearstatcache(); 199 | $this->testFileChmod = decoct(@fileperms('test.txt') & 511); 200 | $this->testFileOwner = posix_getpwuid(@fileowner('test.txt')); 201 | 202 | // Check the file owner 203 | if (in_array($this->testFileChmod, $options)) { 204 | if ($this->fileOwner['name'] == $this->testFileOwner['name']) { 205 | @unlink('test.txt'); 206 | 207 | return true; 208 | } 209 | } 210 | } 211 | 212 | @unlink('test.txt'); 213 | $this->failure = true; 214 | 215 | return false; 216 | } 217 | } 218 | -------------------------------------------------------------------------------- /check/controller/index.php: -------------------------------------------------------------------------------- 1 | 25 | */ 26 | class Index 27 | { 28 | /** 29 | * @var boolean 30 | */ 31 | protected $filePermissions; 32 | 33 | /** 34 | * Execute the command 35 | */ 36 | public function run() 37 | { 38 | $this->filePermissions = $this->checkFilePermissions(); 39 | 40 | include __DIR__ . '/../views/index.phtml'; 41 | } 42 | 43 | /** 44 | * Return true if Contao 2 can be installed 45 | * 46 | * @return boolean True if Contao 2 can be installed 47 | */ 48 | public function supportsContao2() 49 | { 50 | $contao = new Contao2; 51 | 52 | if (!$contao->hasPhp()) { 53 | return false; 54 | } 55 | 56 | if (!$contao->hasNotPhp7()) { 57 | return false; 58 | } 59 | 60 | if (!$contao->hasGd()) { 61 | return false; 62 | } 63 | 64 | if (!$contao->hasDom()) { 65 | return false; 66 | } 67 | 68 | if (!$contao->hasXmlReader()) { 69 | return false; 70 | } 71 | 72 | return true; 73 | } 74 | 75 | /** 76 | * Return true if Contao 3 can be installed 77 | * 78 | * @return boolean True if Contao 3 can be installed 79 | */ 80 | public function supportsContao3() 81 | { 82 | $contao = new Contao3; 83 | 84 | if (!$contao->hasPhp()) { 85 | return false; 86 | } 87 | 88 | if (!$contao->hasGd()) { 89 | return false; 90 | } 91 | 92 | if (!$contao->hasDom()) { 93 | return false; 94 | } 95 | 96 | if (!$contao->hasXmlReader()) { 97 | return false; 98 | } 99 | 100 | return true; 101 | } 102 | 103 | /** 104 | * Return true if Contao 4 can be installed 105 | * 106 | * @return boolean True if Contao 4 can be installed 107 | */ 108 | public function supportsContao4() 109 | { 110 | $contao = new Contao4; 111 | 112 | return $contao->checkCompatibility(); 113 | } 114 | 115 | /** 116 | * Return true if Contao 4 can be installed 117 | * 118 | * @return boolean True if Contao 4 can be installed 119 | */ 120 | public function supportsContao45() 121 | { 122 | $contao = new Contao45; 123 | 124 | return $contao->checkCompatibility(); 125 | } 126 | 127 | /** 128 | * Return true if the PHP process is allowed to create files 129 | * 130 | * @return boolean True if the PHP process is allowed to create files 131 | */ 132 | public function canCreateFiles() 133 | { 134 | return $this->filePermissions; 135 | } 136 | 137 | /** 138 | * Return true if the Live Update can be used 139 | * 140 | * @return boolean True if the Live Update can be used 141 | */ 142 | public function canUseLiveUpdate() 143 | { 144 | $update = new LiveUpdate; 145 | 146 | if (!$update->hasPhp()) { 147 | return false; 148 | } 149 | 150 | if (!$update->hasPhar()) { 151 | return false; 152 | } 153 | 154 | if ($update->hasXCache()) { 155 | return false; 156 | } 157 | 158 | if (!$update->hasSsl()) { 159 | return false; 160 | } 161 | 162 | if ($update->hasIonCube()) { 163 | return false; 164 | } 165 | 166 | if ($update->hasSuhosin()) { 167 | return false; 168 | } 169 | 170 | if ($update->hasDetectUnicode()) { 171 | return false; 172 | } 173 | 174 | if ($update->isFastCgiEaccelerator()) { 175 | return false; 176 | } 177 | 178 | if (!$update->canConnect()) { 179 | return false; 180 | } 181 | 182 | return true; 183 | } 184 | 185 | /** 186 | * Return true if the Extension Repository can be used 187 | * 188 | * @return boolean True if the Extension Repository can be used 189 | */ 190 | public function canUseComposer() 191 | { 192 | $composer = new Composer; 193 | 194 | if (!$composer->hasPhp()) { 195 | return false; 196 | } 197 | 198 | if (!$composer->hasPhar()) { 199 | return false; 200 | } 201 | 202 | if ($composer->hasXCache()) { 203 | return false; 204 | } 205 | 206 | if (!$composer->hasCurl()) { 207 | return false; 208 | } 209 | 210 | if ($composer->hasApc()) { 211 | return false; 212 | } 213 | 214 | if ($composer->hasSuhosin()) { 215 | return false; 216 | } 217 | 218 | if (!$composer->hasAllowUrlFopen()) { 219 | return false; 220 | } 221 | 222 | if ($this->filePermissions) { 223 | return false; 224 | } 225 | 226 | return true; 227 | } 228 | 229 | /** 230 | * Return true if the Extension Repository can be used 231 | * 232 | * @return boolean True if the Extension Repository can be used 233 | */ 234 | public function canUseRepository() 235 | { 236 | $repository = new Repository; 237 | 238 | if (!$repository->hasSoap()) { 239 | return false; 240 | } 241 | 242 | if (!$repository->canConnect()) { 243 | return false; 244 | } 245 | 246 | return true; 247 | } 248 | 249 | /** 250 | * Return true if the PHP process is allowed to create files 251 | * 252 | * @return boolean True if the PHP process is allowed to create files 253 | */ 254 | protected function checkFilePermissions() 255 | { 256 | $permissions = new FilePermissions; 257 | 258 | if ($permissions->hasSafeMode()) { 259 | return true; 260 | } 261 | 262 | if (function_disabled('posix_getpwuid')) { 263 | return true; 264 | } 265 | 266 | if (!$permissions->canCreateFolder()) { 267 | return true; 268 | } 269 | 270 | if (!$permissions->canCreateFile()) { 271 | return true; 272 | } 273 | 274 | return false; 275 | } 276 | } 277 | -------------------------------------------------------------------------------- /check/controller/live-update.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class LiveUpdate 18 | { 19 | const PHP_VERSION = '5.3.2'; 20 | 21 | /** 22 | * @var boolean 23 | */ 24 | protected $available = true; 25 | 26 | /** 27 | * Execute the command 28 | */ 29 | public function run() 30 | { 31 | include __DIR__ . '/../views/live-update.phtml'; 32 | } 33 | 34 | /** 35 | * Return the availability of the Live Update 36 | * 37 | * @return boolean True if the Live Update can be used 38 | */ 39 | public function isAvailable() 40 | { 41 | return $this->available; 42 | } 43 | 44 | /** 45 | * Check whether the PHP version meets the requirements 46 | * 47 | * @return boolean True if the PHP version meets the requirements 48 | */ 49 | public function hasPhp() 50 | { 51 | if (version_compare(phpversion(), static::PHP_VERSION, '>=')) { 52 | return true; 53 | } 54 | 55 | $this->available = false; 56 | 57 | return false; 58 | } 59 | 60 | /** 61 | * Check whether the PHP Phar extension is available 62 | * 63 | * @return boolean True if the PHP Phar extension is available 64 | */ 65 | public function hasPhar() 66 | { 67 | if (extension_loaded('Phar')) { 68 | return true; 69 | } 70 | 71 | $this->available = false; 72 | 73 | return false; 74 | } 75 | 76 | /** 77 | * Check whether the XCache extension is loaded 78 | * 79 | * @return boolean True if the PHP Phar extension is loaded 80 | */ 81 | public function hasXCache() 82 | { 83 | if (!extension_loaded('XCache')) { 84 | return false; 85 | } 86 | 87 | $this->available = false; 88 | 89 | return true; 90 | } 91 | 92 | /** 93 | * Check whether the PHP OpenSSL extension is available 94 | * 95 | * @return boolean True if the PHP OpenSSL extension is available 96 | */ 97 | public function hasSsl() 98 | { 99 | if (extension_loaded('openssl')) { 100 | return true; 101 | } 102 | 103 | $this->available = false; 104 | 105 | return false; 106 | } 107 | 108 | /** 109 | * Check whether the ionCube Loader is enabled 110 | * 111 | * @return boolean True if the ionCube Loader is enabled 112 | */ 113 | public function hasIonCube() 114 | { 115 | if (!extension_loaded('ionCube Loader')) { 116 | return false; 117 | } 118 | 119 | // The issues have been fixed in version 4.0.9 120 | if (function_exists('ioncube_loader_iversion') && ioncube_loader_iversion() >= 40009) { 121 | return false; 122 | } 123 | 124 | $this->available = false; 125 | 126 | return true; 127 | } 128 | 129 | /** 130 | * Check whether the PHP Suhosin extension is enabled 131 | * 132 | * @return boolean True if the PHP Suhosin extension is enabled 133 | */ 134 | public function hasSuhosin() 135 | { 136 | $suhosin = ini_get('suhosin.executor.include.whitelist'); 137 | 138 | if ($suhosin === false) { 139 | return false; 140 | } 141 | 142 | $allowed = array_map('trim', explode(',', $suhosin)); 143 | 144 | // The previous check returned false positives for e.g. "phar." 145 | if (in_array('phar', $allowed) || in_array('phar://', $allowed)) { 146 | return false; 147 | } 148 | 149 | $this->available = false; 150 | 151 | return true; 152 | } 153 | 154 | /** 155 | * Check whether detect_unicode is enabled 156 | * 157 | * @return boolean True if detect_unicode is enabled 158 | */ 159 | public function hasDetectUnicode() 160 | { 161 | $multibyte = ini_get('zend.multibyte'); 162 | 163 | // Zend multibyte has been disabled (see #28) 164 | if ($multibyte !== false) { 165 | if ($multibyte == '' || $multibyte == 0 || $multibyte == 'Off') { 166 | return false; 167 | } 168 | } 169 | 170 | // Determine the correct parameter name (see #28) 171 | if (version_compare(phpversion(), '5.4', '<')) { 172 | $name = 'detect_unicode'; 173 | } else { 174 | $name ='zend.detect_unicode'; 175 | } 176 | 177 | $unicode = ini_get($name); 178 | 179 | // Detect_unicode has been disabled 180 | if ($unicode == '' || $unicode == 0 || $unicode == 'Off') { 181 | return false; 182 | } 183 | 184 | $this->available = false; 185 | 186 | return true; 187 | } 188 | 189 | /** 190 | * Check whether PHP is run as FastCGI with the eAccelerator 191 | * 192 | * @return boolean True if PHP is run as FastCGI with the eAccelerator 193 | */ 194 | public function isFastCgiEaccelerator() 195 | { 196 | $fast_cgi = (php_sapi_name() == 'cgi-fcgi'); 197 | $eaccelerator = extension_loaded('eaccelerator') && ini_get('eaccelerator.enable'); 198 | 199 | if (!$fast_cgi || !$eaccelerator) { 200 | return false; 201 | } 202 | 203 | $this->available = false; 204 | 205 | return true; 206 | } 207 | 208 | /** 209 | * Check whether a connection can be established 210 | */ 211 | public function canConnect() 212 | { 213 | $connection = @fsockopen('ssl://update.contao.org', 443, $errno, $errstr, 10); 214 | 215 | if ($connection !== false) { 216 | fclose($connection); 217 | return true; 218 | } 219 | 220 | $this->available = false; 221 | 222 | return false; 223 | } 224 | } 225 | -------------------------------------------------------------------------------- /check/controller/repository.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Repository 18 | { 19 | /** 20 | * @var boolean 21 | */ 22 | protected $available = true; 23 | 24 | /** 25 | * Execute the command 26 | */ 27 | public function run() 28 | { 29 | include __DIR__ . '/../views/repository.phtml'; 30 | } 31 | 32 | /** 33 | * Return the availability of the Extension Repository 34 | * 35 | * @return boolean True if the Extension Repository can be used 36 | */ 37 | public function isAvailable() 38 | { 39 | return $this->available; 40 | } 41 | 42 | /** 43 | * Check whether the PHP SOAP extension is available 44 | * 45 | * @return boolean True if the PHP SOAP extension is available 46 | */ 47 | public function hasSoap() 48 | { 49 | if (extension_loaded('soap')) { 50 | return true; 51 | } 52 | 53 | $this->available = false; 54 | 55 | return false; 56 | } 57 | 58 | /** 59 | * Check whether the PHP OpenSSL extension is available 60 | * 61 | * @return boolean True if the PHP OpenSSL extension is available 62 | */ 63 | public function hasSsl() 64 | { 65 | if (extension_loaded('openssl')) { 66 | return true; 67 | } 68 | 69 | $this->available = false; 70 | 71 | return false; 72 | } 73 | 74 | /** 75 | * Check whether a connection can be established 76 | */ 77 | public function canConnect() 78 | { 79 | $connection = @fsockopen('ssl://contao.org', 443, $errno, $errstr, 10); 80 | 81 | if ($connection !== false) { 82 | fclose($connection); 83 | return true; 84 | } 85 | 86 | $this->available = false; 87 | 88 | return false; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /check/controller/validator.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Validator 18 | { 19 | /** 20 | * @var boolean 21 | */ 22 | protected $valid = true; 23 | 24 | /** 25 | * @var boolean 26 | */ 27 | protected $constants = true; 28 | 29 | /** 30 | * @var boolean 31 | */ 32 | protected $version = true; 33 | 34 | /** 35 | * @var array 36 | */ 37 | protected $errors = array(); 38 | 39 | /** 40 | * Check whether there is a Contao installation 41 | */ 42 | public function run() 43 | { 44 | if (!$this->findConstants()) { 45 | $this->valid = false; 46 | } else { 47 | if (version_compare(VERSION, '4', '>=')) { 48 | $this->errors['version'] = sprintf(__('Contao %s cannot be validated with the Contao Check.'), explode('.', VERSION)[0]); 49 | $this->valid = false; 50 | } elseif (!$this->getVersionFile()) { 51 | $this->valid = false; 52 | } else { 53 | $this->validate(); 54 | } 55 | } 56 | 57 | include __DIR__ . '/../views/validator.phtml'; 58 | } 59 | 60 | /** 61 | * Check whether the constants.php file has been found 62 | * 63 | * @return boolean True if the constants.php file has been found 64 | */ 65 | public function hasConstants() 66 | { 67 | return $this->constants; 68 | } 69 | 70 | /** 71 | * Check whether the Contao version is supported 72 | * 73 | * @return boolean True if the Contao version is supported 74 | */ 75 | public function isSupportedVersion() 76 | { 77 | return $this->version; 78 | } 79 | 80 | /** 81 | * Check whether there are missing files 82 | * 83 | * @return boolean True if there are missing files 84 | */ 85 | public function hasMissing() 86 | { 87 | return !empty($this->errors['missing']); 88 | } 89 | 90 | /** 91 | * Return the missing files as array 92 | * 93 | * @return array The missing files array 94 | */ 95 | public function getMissing() 96 | { 97 | return $this->errors['missing']; 98 | } 99 | 100 | /** 101 | * Check whether there are corrupt files 102 | * 103 | * @return boolean True if there are corrupt files 104 | */ 105 | public function hasCorrupt() 106 | { 107 | return !empty($this->errors['corrupt']); 108 | } 109 | 110 | /** 111 | * Return the corrupt files as array 112 | * 113 | * @return array The corrupt files array 114 | */ 115 | public function getCorrupt() 116 | { 117 | return $this->errors['corrupt']; 118 | } 119 | 120 | /** 121 | * Check whether there are optional files 122 | * 123 | * @return boolean True if there are optional files 124 | */ 125 | public function hasOptional() 126 | { 127 | return !empty($this->errors['optional']); 128 | } 129 | 130 | /** 131 | * Return the optional files as array 132 | * 133 | * @return array The optional files array 134 | */ 135 | public function getOptional() 136 | { 137 | return $this->errors['optional']; 138 | } 139 | 140 | /** 141 | * Check whether the Contao version is supported 142 | * 143 | * @return boolean True if the Contao version is not supported 144 | */ 145 | public function hasVersionError() 146 | { 147 | return !empty($this->errors['version']); 148 | } 149 | 150 | /** 151 | * Return the version error message 152 | * 153 | * @return array The version error message 154 | */ 155 | public function getVersionError() 156 | { 157 | return $this->errors['version']; 158 | } 159 | 160 | /** 161 | * Check whether the installation is vaild 162 | * 163 | * @return boolean True if the installation is valid 164 | */ 165 | public function isValid() 166 | { 167 | return $this->valid; 168 | } 169 | 170 | /** 171 | * Check whether there was an error retrieving the version file 172 | * 173 | * @return boolean True if there was an error retrieving the version file 174 | */ 175 | public function hasVersionFileError() 176 | { 177 | return isset($this->errors['versionFile']); 178 | } 179 | 180 | /** 181 | * Return the version file error 182 | * 183 | * @return string The version file error 184 | */ 185 | public function getVersionFileError() 186 | { 187 | return $this->errors['versionFile']; 188 | } 189 | 190 | /** 191 | * Find the constants.php file 192 | * 193 | * @return boolean True if the constants.php file was found 194 | */ 195 | protected function findConstants() 196 | { 197 | define('TL_ROOT', 'Required for Contao 2.11'); 198 | 199 | if (file_exists(__DIR__ . '/../../system/constants.php')) { 200 | include __DIR__ . '/../../system/constants.php'; 201 | } elseif (file_exists(__DIR__ . '/../../system/config/constants.php')) { 202 | include __DIR__ . '/../../system/config/constants.php'; 203 | } elseif (file_exists(__DIR__ . '/../../../vendor/contao/core-bundle/src/Resources/contao/config/constants.php')) { 204 | include __DIR__ . '/../../../vendor/contao/core-bundle/src/Resources/contao/config/constants.php'; 205 | } elseif (file_exists(__DIR__ . '/../../../vendor/contao/contao/core-bundle/src/Resources/contao/config/constants.php')) { 206 | include __DIR__ . '/../../../vendor/contao/contao/core-bundle/src/Resources/contao/config/constants.php'; 207 | } else { 208 | $this->constants = false; 209 | 210 | return false; 211 | } 212 | 213 | return true; 214 | } 215 | 216 | /** 217 | * Get the name of the version file 218 | * 219 | * @return string The version file name 220 | */ 221 | protected function getVersionFilePath() 222 | { 223 | return 'versions/' . VERSION . '.' . BUILD . '.json'; 224 | } 225 | 226 | /** 227 | * Get the URL to the version file 228 | * 229 | * @return string The url to the version file 230 | */ 231 | public function getVersionFileUrl() 232 | { 233 | return 'https://download.contao.org/' . $this->getVersionFilePath(); 234 | } 235 | 236 | /** 237 | * Download the version file 238 | * 239 | * @return boolean True if the Contao version is supported 240 | */ 241 | protected function getVersionFile() 242 | { 243 | $file = $this->getVersionFilePath(); 244 | 245 | if (!file_exists($file)) { 246 | try { 247 | $url = $this->getVersionFileUrl(); 248 | file_put_contents($file, curl($url)); 249 | 250 | if (!file_exists($file) || filesize($file) < 1) { 251 | $this->version = false; 252 | 253 | return false; 254 | } 255 | } catch (RuntimeException $e) { 256 | $this->version = false; 257 | $this->errors['versionFile'] = $e->getMessage(); 258 | 259 | return false; 260 | } 261 | } 262 | 263 | return true; 264 | } 265 | 266 | /** 267 | * Validate the installation 268 | */ 269 | protected function validate() 270 | { 271 | $this->errors = array( 272 | 'missing' => array(), 273 | 'corrupt' => array(), 274 | 'optional' => array() 275 | ); 276 | 277 | // Load the file hashes 278 | $file = 'versions/' . VERSION . '.' . BUILD . '.json'; 279 | $hashes = json_decode(file_get_contents($file)); 280 | 281 | foreach ($hashes as $path=>$md5_file) { 282 | if ($md5_file == '') { 283 | continue; 284 | } 285 | 286 | if (!file_exists(__DIR__ . "/../../$path")) { 287 | if ($this->isOptional($path)) { 288 | $this->errors['optional'][] = $path; 289 | } else { 290 | $this->valid = false; 291 | $this->errors['missing'][] = $path; 292 | } 293 | } else { 294 | $buffer = str_replace("\r", '', file_get_contents(__DIR__ . "/../../$path")); 295 | 296 | // Check the MD5 hash 297 | if (strncmp(md5($buffer), $md5_file, 10) !== 0) { 298 | $this->valid = false; 299 | 300 | if ($this->isOptional($path)) { 301 | $this->errors['optional'][] = $path; 302 | } else { 303 | $this->errors['corrupt'][] = $path; 304 | } 305 | } 306 | 307 | $buffer = null; 308 | } 309 | } 310 | } 311 | 312 | /** 313 | * Check if a file is optional 314 | * 315 | * @param string $path The file path 316 | * 317 | * @return boolean True if the file is optional 318 | */ 319 | protected function isOptional($path) 320 | { 321 | if ($path == 'files/tinymce.css' || $path == 'templates/music_academy.sql') { 322 | return true; 323 | } 324 | 325 | if (strncmp($path, 'files/tiny_templates/', 11) === 0 || strncmp($path, 'files/music_academy/', 20) === 0) { 326 | return true; 327 | } 328 | 329 | return false; 330 | } 331 | } 332 | -------------------------------------------------------------------------------- /check/i18n/ja.php: -------------------------------------------------------------------------------- 1 | 'Composerパッケージ管理', 14 | 'PHP %s or greater' => 'PHP %s以降', 15 | 'You have PHP version %s.' => 'インストールしてあるPHPはバージョン%sです。', 16 | 'Composer requires at least PHP version %s.' => '少なくともPHPバージョン%sがComposerに必要です。', 17 | 'PHP Phar extension' => 'PHPのPhar拡張', 18 | 'The PHP Phar extension is enabled.' => 'PHP Phar拡張は有効です。', 19 | 'The PHP Phar extension is not enabled.' => 'PHP Phar拡張は有効ではありません。', 20 | 'The PHP Phar extension is part of the PHP core since PHP 5.3 and has to be explicitly disabled using the --disable-phar flag. Recompile PHP without the flag.' => 'PHPのPhar拡張はPHP 5.3からPHP本体の一部で、無効とするには明示的に--disable-pharフラッグを使用しなければなりません。このフラグを指定しないでPHPを再コンパイルしてください。', 21 | 'PHP cURL extension' => 'PHPのcURL拡張', 22 | 'The PHP cURL extension is available.' => 'PHP cURL拡張を利用できます。', 23 | 'The PHP cURL extension is not available.' => 'PHP cURL拡張を利用できません。', 24 | 'The PHP cURL extension is required to communicate with the package server. You can enable it by compiling PHP with the --enable-curl flag.' => 'PHP cURL拡張がパッケージサーバーと通信するために必要です。--enable-curlフラッグでPHPをコンパイルすると有効にできます。', 25 | 'PHP APC extension' => 'PHPのAPC拡張', 26 | 'The PHP APC extension is not installed.' => 'PHP APC拡張をインストールしてありません。', 27 | 'The PHP APC extension is installed.' => 'PHP APC拡張をインストールしてあります。', 28 | 'Using the PHP APC extension with Composer can lead to unexpected "cannot redeclare class" errors.' => 'Composerと一緒にPHP APC拡張を使用すると予期しない"cannot redeclare class"というエラーを起こすことがあります。', 29 | 'Suhosin extension' => 'Suhosin拡張', 30 | 'The Suhosin extension is not installed or correctly configured for .phar files.' => 'Suhosin拡張をインストールしていないか、.pharファイルに対して正しく構成してあります。', 31 | 'The Suhosin extension does not allow to run .phar files.' => 'Suhosin拡張が.pharファイルの実行を許可していません。', 32 | 'You have to add "phar" to the list of allowed streams in your php.ini: suhosin.executor.include.whitelist = phar' => 'php.iniで許可するストリームのリストに"phar"を加えなければなりません: suhosin.executor.include.whitelist = phar', 33 | 'allow_url_fopen' => 'allow_url_fopen', 34 | 'The PHP flag "allow_url_fopen" is set.' => 'PHPの設定オプションの"allow_url_fopen"が設定してあります。', 35 | 'The PHP flag "allow_url_fopen" is not set.' => 'PHPの設定オプションの"allow_url_fopen"は設定してありません。', 36 | 'To download the installation files, Composer requires the "allow_url_fopen" flag to be set in the php.ini.' => 'Composerがインストールするファイルをダウンロードするためには、設定オプションの"allow_url_fopen"をphp.iniで設定されている必要があります。', 37 | 'File permissions' => 'ファイルの権限', 38 | 'The "posix_getpwuid" function is not available.' => 'PHPの"posix_getpwuid"関数を利用できません。', 39 | 'File permissions cannot be tested, because the posix_getpwuid function has been disabled. Please contact your server administrator.' => 'posix_getpwuid関数を利用できないため、ファイルの権限をテストできません。サーバー管理者に連絡してください。', 40 | 'The PHP process is allowed to create files.' => 'PHPのプロセスにファイルの作成を許可しています。', 41 | 'The PHP process is not allowed to create files.' => 'PHPのプロセスにファイルの作成を許可していません。', 42 | 'The PHP process is not allowed to create or manipulate files. Please adjust your server configuration accordingly.' => 'PHPのプロセスにファイルの作成や操作を許可していません。サーバーの構成を適切に調整してください。', 43 | 'shell_exec (optional)' => 'shell_exec (任意)', 44 | 'The PHP function "shell_exec" is available.' => 'PHPの"shell_exec"関数を利用できます。', 45 | 'The PHP function "shell_exec" is not available.' => 'PHPの"shell_exec"関数を利用できません。', 46 | 'The "shell_exec" function is optionally required to run the Composer process in the background.' => '"shell_exec"関数は必須ではありませんが、Composerのプロセスをバックグラウンドで実行するために必要です。', 47 | 'proc_open (optional)' => 'proc_open (任意)', 48 | 'The PHP function "proc_open" is available.' => 'PHPの"proc_open"関数を利用できます。', 49 | 'The PHP function "proc_open" is not available.' => 'PHPの"proc_open"関数を利用できません。', 50 | 'The "proc_open" function is optionally required to run the package manager in dev mode.' => '"proc_open"関数は必須ではありませんが、パッケージ管理を開発モードで実行するために必要です。', 51 | 'You can use the Composer package manager on this server.' => 'このサーバーでComposerパッケージ管理を使用できます。', 52 | 'You cannot use the Composer package manager on this server.' => 'このサーバーではComposerパッケージ管理を使用できません。', 53 | 'Go back' => '戻る', 54 | 'php.ini settings' => 'php.iniの設定', 55 | 'The PHP safe_mode is not enabled.' => 'PHPのsafe_modeは有効ではありません。', 56 | 'The PHP safe_mode is enabled.' => 'PHPのsafe_modeは有効です。', 57 | 'It is recommended to disable the safe_mode in your php.ini or server control panel, otherwise the PHP process it not allowed to create or manipulate files and Contao cannot work properly.' => 'php.iniまたはサーバーのコントロールパネルでsafe_modeを無効にするようにお勧めします。そうしないと、PHPのプロセスにファイルの作成や操作を許可しないこととなり、Contaoはきちんと動作しません。', 58 | 'Creating a test folder' => 'テストフォルダーの作成', 59 | 'The test folder could be created (owner: %s, chmod: %s).' => 'テストフォルダーを(所有者: %s、モード: %sで)作成できました。', 60 | 'The test folder could not be created.' => 'テストフォルダーを作成できませんでした。', 61 | 'It seems that the PHP process does not have enough permissions to create folders on your server.' => 'サーバーでPHPのプロセスがフォルダーを作成するのに十分な権限がないようです。', 62 | 'The test folder does not have the correct owner or chmod settings.' => 'テストフォルダーが正しい所有者と権限の設定ではありません。', 63 | 'The test folder is owned by %s (should be %s) and has the chmod settings %s (should be %s).' => 'テストフォルダーの所有者は%s(本来は%s)で、アクセス権限は%s(本来は%s)です。', 64 | '775, 755, 770, 750 or 705' => '775、755、770、750、705', 65 | 'Creating a test file' => 'テストファイルの作成', 66 | 'The test file could be created (owner: %s, chmod: %s).' => 'テストファイルを(所有者: %s、モード: %sで)作成できました。', 67 | 'The test file could not be created.' => 'テストファイルを作成できませんでした。', 68 | 'It seems that the PHP process does not have enough permissions to create files on your server.' => 'サーバーでPHPのプロセスがファイルを作成するのに十分な権限がないようです。', 69 | 'The test file does not have the correct owner or chmod settings.' => 'テストファイルが正しい所有者と権限の設定ではありません。', 70 | 'The test file is owned by %s (should be %s) and has the chmod settings %s (should be %s).' => 'テストファイルの所有者は%s(本来は%s)で、アクセス権限は%s(本来は%s)です。', 71 | '664, 644, 660, 640 or 604' => '664、644、660、640、604', 72 | 'The PHP process is allowed to create files on this server.' => 'このサーバーではPHPのプロセスにファイルの作成を許可しています。', 73 | 'The PHP process is not allowed to create files on this server.' => 'このサーバーではPHPのプロセスにファイルの作成を許可していません。', 74 | 'Overview' => '概要', 75 | 'You can install Contao 2.x' => 'Contao 2.xをインストールできます。', 76 | 'You cannot install Contao 2.x' => 'Contao 2.xをインストールできません。', 77 | 'You can install Contao 3.x' => 'Contao 3.xをインストールできます。', 78 | 'You cannot install Contao 3.x' => 'Contao 3.xをインストールできません。', 79 | 'You can install Contao 4.x' => 'Contao 4.xをインストールできます。', 80 | 'You cannot install Contao 4.x' => 'Contao 4.xをインストールできません。', 81 | 'You can install Contao 4.5' => 'Contao 4.5をインストール可能', 82 | 'You cannot install Contao 4.5' => 'Contao 4.5をインストール不可能', 83 | 'The file permissions cannot be checked.' => 'ファイルの権限を検査できません。', 84 | 'More information …' => 'さらに詳しい情報 ...', 85 | 'Additional services' => '補足的なサービス', 86 | 'You can use the Live Update.' => 'ライブアップデートを使用できます。', 87 | 'You cannot use the Live Update.' => 'ライブアップデートを使用できません。', 88 | 'The Composer package manager requirements cannot be checked.' => 'Composerパッケージ管理の要件を検査できません。', 89 | 'You can use the Composer package manager.' => 'Composerパッケージ管理を使用できます。', 90 | 'You cannot use the Composer package manager.' => 'Composerパッケージ管理を使用できません。', 91 | 'You can use the Extension Repository.' => '機能拡張リポジトリを使用できます。', 92 | 'You cannot use the Extension Repository.' => '機能拡張リポジトリを使用できません。', 93 | 'Install Contao' => 'Contaoをインストール', 94 | 'Validate an existing installation' => 'インストールしているContaoを検証', 95 | 'Installation' => 'インストール', 96 | 'Web installer' => 'ウェブインストーラー', 97 | 'There is a Contao installation already. Are you looking for the %s?' => '既にContaoをインストールしてあります。%sをお探してですか?', 98 | 'The automatic installation is not possible on your server due to safe_mode or file permission restrictions.' => 'セーフモード対処またはファイルの権限の制限のため、自動的なインストールは不可能です。', 99 | 'The automatic installation is possible on your server.' => 'このサーバーでは自動的なインストールが可能です。', 100 | 'The automatic installation is not possible on your server.' => 'このサーバーでは自動的なインストールは不可能です。', 101 | 'Your PHP installation either cannot connect to download.contao.org or is missing the PHP extension cURL or Zip.' => 'インストールしてあるPHPではdownload.contao.orgに接続できないか、PHPのcURLやZipの拡張が欠けています。', 102 | 'Manual installation' => '手作業によるインストール', 103 | 'Go to %s and download the latest Contao version.' => '%sをアクセスして最新のバージョンのContaoをダウンロードしてください。', 104 | 'Extract the download archive and upload the files to your server using an (S)FTP client.' => 'Contaoのアーカイブのファイルをダウンロードして展開し、(S)FTPクライアントを使用して使用するサーバーにアップロードしてください。', 105 | 'Open the Contao install tool by adding "/contao/install.php" to the URL of your installation.' => 'インストールするURLに"/contao/install.php"を追加して、Contaoのインストールツールにアクセスしてください。', 106 | 'Target version' => '目的のバージョン', 107 | 'Start the installation' => 'インストールを開始', 108 | 'Installation failed' => 'インストールできませんでした', 109 | 'Installation complete' => 'インストールを完了', 110 | 'Contao %s has been installed in %s.' => 'Contao %sを%sにインストールしました。', 111 | 'Open the Contao install tool' => 'Contaoのインストールツールを実行', 112 | 'Live Update' => 'ライブアップデート', 113 | 'Phar has been added to the PHP core in version 5.3, so you require at least PHP version %s to use .phar files. If you have PHP 5.2, you might be able to use .phar files by installing the PECL phar extension (see %s).' => 'PHPはバージョン5.3でPharを中心部分に追加していますので、少なくともPHP バージョン%sが.pharファイルを使用するために必要です。PHP 5.2の場合は、PECLのphar格調(%sを参照)をインストールすると.pharファイルを使用できるかもしれません。', 114 | 'PHP OpenSSL extension' => 'PHPのOpenSSL拡張', 115 | 'The PHP OpenSSL extension is enabled.' => 'PHPのOpenSSL拡張は有効です。', 116 | 'The PHP OpenSSL extension is not enabled.' => 'PHPのOpenSSL拡張は有効ではありません。', 117 | 'The PHP OpenSSL extension is required to set up a secure connection to the Live Update server. Enable it in your php.ini.' => 'PHPのOpenSSL拡張は、ライブアップデートサーバーに安全な接続を確立するために必要です。php.iniで有効にしてください。', 118 | 'The ionCube Loader is not enabled or at least at version 4.0.9.' => 'ionCubeローダーが有効ではないか、バージョン4.0.9以降ではありません。', 119 | 'An old version of the ionCube Loader prior to version 4.0.9 is installed.' => 'バージョン4.0.9より前の古いionCubeローダーがインストールしてあります。', 120 | 'Before version 4.0.9, the ionCube Loader was incompatible with Phar archives. Either upgrade to the latest version or disable the module. More information is available here: %s' => 'バージョン4.0.9より前では、ionCubeローダーはPharアーカイブと互換性がありません。<最新のバージョンに更新するか、モジュールを無効にしてください。さらに詳しい情報はこちらを参照してください: %s', 121 | 'Detect Unicode' => 'Unicodeの検出', 122 | 'The --enable-zend-multibyte flag is not set or detect_unicode is disabled.' => '--enable-zend-multibyteフラッグを設定していないか、detect_unicodeが無効です。', 123 | 'The detect_unicode settings on your server are not correct.' => 'サーバーのdetect_unicodeの設定が正しくありません。', 124 | 'If PHP is compiled with the --enable-zend-multibyte flag, you have to explicitly disable detect_unicode in your php.ini: detect_unicode = Off. This is a PHP bug which might be fixed in the future. More information is available here: %s' => 'PHPが--enable-zend-multibyteフラッグでコンパイルしてある場合は、php.iniで明示的にdetect_unicodeを無効にしなければなりません: detect_unicode = " 125 | "Off これはPHPに将来修正されるかもしれないバグがあるためです。さらに詳しい情報はこちらを参照してください: %s', 126 | 'You are not using FastCGI and eAccelerator.' => 'FastCGIとeAcceleratorを使用していません。', 127 | 'You are using FastCGI and eAccelerator.' => 'FastCGIとeAcceleratorを使用しています。', 128 | 'It seems that FastCGI in combination with the eAccelerator extension is buggy when it comes to Phar archives. You can either disable the eAccelerator extension or use a different PHP cache instead (e.g. FastCGI+APC).' => 'FastCGIをeAccelerator拡張と組み合わせて使用していると、Pharアーカイブを使用するときにバグがあるようです。eAccelerator拡張を無効にするか、異なるPHPのキャッシュ(例えば、FastCGIとAPC)を使用してください。', 129 | 'Connection test' => '接続テスト', 130 | 'A connection to update.contao.org could be established.' => 'update.contao.orgに接続できそうです。', 131 | 'A connection to update.contao.org could not be established.' => 'update.contao.orgに接続できませんでした。', 132 | 'Maybe the request has been blocked by a firewall or your OpenSSL version is too old. Please contact your server administrator.' => 'おそらくリクエストはファイアーウォールで遮断されているか、使用しているOpenSSLのバージョンがとても古いと考えられます。サーバー管理者に連絡してください。', 133 | 'You can use the Live Update on this server.' => 'このサーバーでライブアップデートを使用できます。', 134 | 'You cannot use the Live Update on this server.' => 'このサーバーでライブアップデートは使用できません。', 135 | 'Extension Repository' => '機能拡張リポジトリ', 136 | 'PHP SOAP extension' => 'PHPのSOAP拡張', 137 | 'The PHP SOAP extension is available.' => 'PHPのSOAP拡張を利用できます。', 138 | 'The PHP SOAP extension is not available.' => 'PHPのSOAP拡張を利用できません。', 139 | 'The PHP SOAP extension is required to communicate with the Extension Repository server. You can enable it by compiling PHP with the --enable-soap flag. Depending on your Contao version, you might also be able to use the %s extension.' => '機能拡張リポジトリのサーバーとのやりとりにPHPのSOAP拡張が必要です。PHPを--enable-soapフラッグでコンパイルすると有効にできます。Contaoのバージョンによっては、%s機能拡張も使用できるかもしれません。', 140 | 'A connection to contao.org could be established.' => 'contao.orgに接続できました。', 141 | 'A connection to contao.org could not be established.' => 'contao.orgに接続できませんでした。', 142 | 'You can use the Extension Repository on this server.' => 'このサーバーで機能拡張リポジトリを使用できます。', 143 | 'You cannot use the Extension Repository on this server.' => 'このサーバーで機能拡張リポジトリは使用できません。', 144 | 'Validate an installation' => 'インストールしているContaoを検証', 145 | 'Could not find a Contao installation.' => 'インストールしてあるContaoを見つけられません。', 146 | 'To validate an existing installation, please upload the "check" folder to your installation directory.' => '既にインストールしたContaoを検証するには、インストールしているディレクトリに"check"のフォルダーをアップロードしてください。', 147 | 'Unknown version' => '不明なバージョン', 148 | 'The installed version %s is not (yet) supported.' => 'インストールしているContaoバージョン%sは(まだ)サポートしていません。', 149 | 'There is no version file for your Contao installation. Are you using a stable Contao version and do you have the latest version of the Contao Check?' => 'インストールしているContaoにバージョンのファイルがありません。安定版のContaoを使用して、最新のバージョンのContaoチェックを使用していますか?', 150 | 'Version' => 'バージョン', 151 | 'Found a Contao %s installation.' => 'インストールしてあるContao %sを検出しました。', 152 | 'Missing files' => '欠けているファイル', 153 | 'Corrupt files' => '破損したファイル', 154 | 'Missing optional files' => '見当たらないオプションのファイル', 155 | 'Your installation is up to date.' => 'インストールしているContaoは最新の状態です。', 156 | 'Your installation is not up to date.' => 'インストールしているContaoは最新の状態ではありません。', 157 | 'Contao 2.x' => 'Contao 2.x', 158 | 'You need at least PHP %s.' => '少なくともPHP %sが必要です。', 159 | 'PHP 7.x' => 'PHP 7.x', 160 | 'The PHP version is lower than 7.0.0.' => 'PHPのバージョンは7.0.0未満です。', 161 | 'Contao 2.x is incompatible with PHP 7.' => 'Contao 2.xはPHP 7と互換性がありません。', 162 | 'PHP GDlib extension' => 'PHPのGDlib拡張', 163 | 'The PHP GDlib extension is enabled.' => 'PHPのGDlib拡張は有効です。', 164 | 'The PHP GDlib extension is not enabled.' => 'PHPのGDlib拡張は無効です。', 165 | 'The PHP GDlib extension is not part of the PHP core and has to be explicitly enabled using the --with-gd flag. Recompile PHP with the flag.' => 'PHPのGDlib拡張はPHPコアの一部ではなく、--with-gdフラッグを使用して明示的に有効にする必要があります。このフラッグを指定してPHPを再コンパイルしてください。', 166 | 'PHP DOM extension' => 'PHPのDOM拡張', 167 | 'The PHP DOM extension is enabled.' => 'PHPのDOM拡張は有効です。', 168 | 'The PHP DOM extension is not enabled.' => 'PHPのDOM拡張は無効です。', 169 | 'The PHP DOM extension is part of the PHP core and has to be explicitly disabled using the --disable-dom flag. Recompile PHP without the flag.' => 'PHPのDOM拡張はPHPコアの一部で、--disable-domフラッグを使用して明示的に無効にしてあります。このフラッグを指定せずにPHPを再コンパイルしてください。', 170 | 'You can install Contao 2.x on this server.' => 'このサーバーにContao 2.xをインストールできます。', 171 | 'You cannot install Contao 2.x on this server.' => 'このサーバーにContao 2.xをインストールできません。', 172 | 'Contao 3.x' => 'Contao 3.x', 173 | 'As of Contao 3.4 you need at least PHP %s.' => 'Contao 3.4以降には少なくともPHP %sが必要です。', 174 | 'You can install Contao 3.x on this server.' => 'このサーバーにContao 3.xをインストールできます。', 175 | 'You cannot install Contao 3.x on this server.' => 'このサーバーにContao 3.xをインストールできません。', 176 | 'Contao 4.x' => 'Contao 4.x', 177 | 'Contao 4.5' => 'Contao 4.5', 178 | 'As of Contao 4.5 you need at least PHP %s.' => 'Contao 4.5以降には少なくともPHP %sが必要です。', 179 | 'PHP intl extension' => 'PHPのintl拡張', 180 | 'The PHP intl extension is enabled.' => 'PHPのintl拡張は有効です。', 181 | 'The PHP intl extension is not enabled.' => 'PHPのintl拡張は無効です。', 182 | 'The PHP intl extension is bundled with the PHP core since PHP 5.3 and has to be explicitly enabled using the --enable-intl flag. Recompile PHP with the flag.' => 'PHPのintl拡張はPHP 5.3からコアに付属していて、--enable-intlフラッグを使用して明示的に有効にする必要があります。このフラッグを指定してPHPを再コンパイルしてください。', 183 | 'The PHP GDlib extension is not enabled.' => 'PHPのGDlib拡張は無効です。', 184 | 'The PHP GDlib extension is not part of the PHP core and has to be explicitly enabled using the --with-gd flag. Recompile PHP with the flag.' => 'PHPのGDlib拡張はPHPコアの一部ではなく、--with-gdフラッグを使用して明示的に有効にする必要があります。このフラッグを指定してPHPを再コンパイルしてください。', 185 | 'You can install Contao 4.x on this server.' => 'このサーバーにContao 4.xをインストールできます。', 186 | 'You cannot install Contao 4.x on this server.' => 'このサーバーにContao 4.xをインストールできません。', 187 | 'You can install Contao 4.5 on this server.' => 'このサーバーにContao 4.5をインストールできます。', 188 | 'You cannot install Contao 4.5 on this server.' => 'このサーバーにContao 4.5をインストールできません。', 189 | 'PHP image processing' => 'PHPの画像処理', 190 | 'At least one of the supported image processing libraries is available.' => 'サポートしている画像ライブラリの少なくとも1つを利用できます。', 191 | 'None of the supported image processing libraries are available.' => 'どのサポートしている画像ライブラリも利用できません。', 192 | 'As of Contao 4.3 one of the supported image processing libraries must be available (GD, Imagick or Gmagick).' => 'Contao 4.3以降にはサポートしている画像ライブラリ(GD、Imagick、Gmagick)の1つが利用できなければなりません。', 193 | 'An unknown error occurred while getting the newest LTS version.' => '最新のLTS版を取得している間に不明なエラーが発生しました。', 194 | 'Version file error' => 'バージョンのファイルのエラー', 195 | 'Error while retrieving version file: %s.' => 'バージョンのファイルを取得中にエラー: %s。', 196 | 'There was an error retrieving the version file from contao.org for your Contao version. You can download the file manually from %s and put it into the "versions" directory of the Contao Check.' => 'Contaoのバージョンを確認するためにcontao.orgからバージョンのファイルを取得するときにエラーが起きました。このファイルを%sから手作業でダウンロードして、Contao Checkの"versions"ディレクトリに置くことができます。', 197 | 'System temp directory' => 'システムの一時ディレクトリ', 198 | 'The system temp directory is writable.' => 'システムの一時ディレクトリに書き込みできます。', 199 | 'The system temp directory is not writable.' => 'システムの一時ディレクトリに書き込みできません。', 200 | 'Make sure the correct directory is configured via the TMP, TMPDIR or TEMP environment variable or the sys_temp_dir PHP variable.' => '正しいディレクトリを環境変数のTMP、TMPDIR、TEMPを経由、またはPHP変数のsys_temp_dirで設定しているか確認してください。', 201 | 'Symlinks' => 'シンボリックリンク', 202 | 'Symlinks can successfully be created.' => 'シンボリックリンクを作成できました。', 203 | 'Symlinks could not be created.' => 'シンボリックリンクを作成できません。', 204 | 'Working symlinks are required to run Contao 4. Please contact your server administrator.' => 'Contao 4の動作にシンボリックリンクが動作することが必要です。サーバーの管理者に連絡してください。', 205 | 'The PHP symlink() function is disabled.' => 'PHPのsymlink()関数が無効になっています。', 206 | 'The PHP symlink() function is required to run Contao 4. Please contact your server administrator.' => 'Contao 4の動作にPHPのsymlink()関数が必要です。サーバーの管理者に連絡してください。', 207 | 'PHP XCache extension' => 'PHPのXCache拡張', 208 | 'The PHP XCache extension is not enabled.' => 'PHPのXCache拡張は無効は無効です。', 209 | 'The PHP XCache extension is enabled.' => 'PHPのXCache拡張は無効は有効です。', 210 | 'The PHP XCache extension prevents the execution of .phar files. Disable this extension in your php.ini.' => 'PHPのXCache拡張は.phar ファイルの実行を妨げます。php.iniで機能拡張を無効にしてください。', 211 | 'The ICU library version is %s.' => 'ICUライブラリのバージョンは%sです。', 212 | 'The ICU library version on your system needs to be at least %s. Please contact your server administrator.' => 'システムのICUライブラリのバージョンは少なくとも%sでなければなりません。サーバーの管理者に連絡してください。', 213 | 'ICU library' => 'ICUライブラリ', 214 | 'Contao system requirements' => 'Contaoのシステム要件', 215 | 'The PHP xmlreader extension is enabled.' => 'PHPのxmlreader拡張は有効です。', 216 | 'The PHP xmlreader extension is not enabled.' => 'PHPのxmlreader拡張は無効です。', 217 | 'The PHP xmlreader extension is bundled with the PHP core since PHP 5.1 and has to be explicitly disabled using the --disable-xmlreader flag. Recompile PHP without the flag.' => 'PHP 5.1からPHPのxmlreader拡張はPHPのcoreに組み込まれていて、--disable-xmlreaderフラッグを指定して明示的に無効にしてあります。このフラッグを指定せずにPHPを再コンパイルしてください。', 218 | 'File locks' => 'ファイルのロック', 219 | 'A file lock could be established.' => 'ファイルのロックを確立できました。', 220 | 'A file lock could not be established.' => 'ファイルのロックを確立できませんでした。', 221 | 'PHP was unable to get a file lock on an existing file. Please contact your server administrator.' => 'PHPは既存のファイルにロックを行えませんでした。サーバーの管理者に連絡してください。', 222 | 'The installer requires the "allow_url_fopen" flag to be set in the php.ini.' => 'インストーラーはphp.iniに"allow_url_fopen"フラッグの設定が必要です。', 223 | 'Contao %s cannot be validated with the Contao Check.' => 'Contao %sはContao Checkでは検証できません。 ', 224 | ); 225 | -------------------------------------------------------------------------------- /check/i18n/rm.php: -------------------------------------------------------------------------------- 1 | 'Administratur da pachets Composer', 14 | 'PHP %s or greater' => 'PHP %s u pli aut', 15 | 'You have PHP version %s.' => 'Ti has la versiun %s da PHP.', 16 | 'Composer requires at least PHP version %s.' => 'Composer basegna almain la versiun da PHP %s.', 17 | 'PHP Phar extension' => 'Extensiun Phar da PHP', 18 | 'The PHP Phar extension is enabled.' => 'L\'extensiun Phar da PHP è activada.', 19 | 'The PHP Phar extension is not enabled.' => 'L\'extensiun Phar da PHP n\'è betg activada.', 20 | 'The PHP Phar extension is part of the PHP core since PHP 5.3 and has to be explicitly disabled using the --disable-phar flag. Recompile PHP without the flag.' => 'L\'extensiun Phar da PHP fa part dal core da PHP davent da PHP 5.3 e sto vegnir deactivà explicitamain cun utilisar il flag --disable-phar. Recompliescha PHP senza quest flag.', 21 | 'PHP cURL extension' => 'Extensiun cURL da PHP', 22 | 'The PHP cURL extension is available.' => 'L\'extensiun cURL da PHP è disponibla.', 23 | 'The PHP cURL extension is not available.' => 'L\'extensiun cURL da PHP n\'è betg disponibla.', 24 | 'The PHP cURL extension is required to communicate with the package server. You can enable it by compiling PHP with the --enable-curl flag.' => 'L\'extensiun cURL da PHP è necessaria da communitgar cun il server da pachets. Ti pos activar ella entras compilar PHP cun il flag --enable-curl.', 25 | 'PHP APC extension' => 'Extensiun APC da PHP', 26 | 'The PHP APC extension is not installed.' => 'L\'extensiun APC da PHP n\'è betg installada.', 27 | 'The PHP APC extension is installed.' => 'L\'extensiun APC da PHP è installada.', 28 | 'Using the PHP APC extension with Composer can lead to unexpected "cannot redeclare class" errors.' => 'Utilisar l\'extensiun APC da PHP ensemen cun Composer po manar ad errurs dal tip "cannot redeclare class".', 29 | 'Suhosin extension' => 'Extensiun Suhosin', 30 | 'The Suhosin extension is not installed or correctly configured for .phar files.' => 'L\'extensiun Suhosin n\'è betg installada u configurada correctamain per datotecas .phar.', 31 | 'The Suhosin extension does not allow to run .phar files.' => 'L\'extensiun Suhosin na lubescha betg l\'exequziun da datotecas .phar.', 32 | 'You have to add "phar" to the list of allowed streams in your php.ini: suhosin.executor.include.whitelist = phar' => 'Ti stos agiuntar "phar" a la glista dals streams lubids en tia php.ini: suhosin.executor.include.whitelist = phar', 33 | 'allow_url_fopen' => 'allow_url_fopen', 34 | 'The PHP flag "allow_url_fopen" is set.' => 'Il flag da PHP "allow_url_fopen" è definì.', 35 | 'The PHP flag "allow_url_fopen" is not set.' => 'Il flag da PHP "allow_url_fopen" n\'è betg definì.', 36 | 'To download the installation files, Composer requires the "allow_url_fopen" flag to be set in the php.ini.' => 'Per telechargiar las datotecas d\'installaziun basegna Composer ch\'il flag "allow_url_fopen" è definì en la php.ini.', 37 | 'File permissions' => 'Autorisaziuns da datotecas', 38 | 'The "posix_getpwuid" function is not available.' => 'The "posix_getpwuid" function is not available.', 39 | 'File permissions cannot be tested, because the posix_getpwuid function has been disabled. Please contact your server administrator.' => 'File permissions cannot be tested, because the posix_getpwuid function has been disabled. Please contact your server administrator.', 40 | 'The PHP process is allowed to create files.' => 'Il process da PHP è autorisà da crear datotecas.', 41 | 'The PHP process is not allowed to create files.' => 'Il process da PHP n\'è betg autorisà da crear datotecas.', 42 | 'The PHP process is not allowed to create or manipulate files. Please adjust your server configuration accordingly.' => 'Il process da PHP n\'è betg autorisà da crear u manipular datotecas. Mida quai p. pl. en la configuraziun dal server.', 43 | 'shell_exec (optional)' => 'shell_exec (opziunal)', 44 | 'The PHP function "shell_exec" is available.' => 'La funcziun da PHP "shell_exec" stat a disposiziun.', 45 | 'The PHP function "shell_exec" is not available.' => 'La funcziun da PHP "shell_exec" na stat betg a disposiziun.', 46 | 'The "shell_exec" function is optionally required to run the Composer process in the background.' => 'La funcziun "shell_exec" vegn duvrada opziunalmain per far il il process da Composer en il fund davos.', 47 | 'proc_open (optional)' => 'proc_open (opziunal)', 48 | 'The PHP function "proc_open" is available.' => 'La funcziun da PHP "proc_open" stat a disposiziun.', 49 | 'The PHP function "proc_open" is not available.' => 'La funcziun da PHP "proc_open" na stat betg a disposiziun.', 50 | 'The "proc_open" function is optionally required to run the package manager in dev mode.' => 'La funcziun "proc_open" è necessaria opziunalmain per exequir l\'administraziun da pachets en il modus da sviluppader.', 51 | 'You can use the Composer package manager on this server.' => 'Ti pos utilisar l\'administratur da pachets Composer sin quest server.', 52 | 'You cannot use the Composer package manager on this server.' => 'Ti na pos betg utilisar l\'administratur da pachets Composer sin quest server.', 53 | 'Go back' => 'Turnar', 54 | 'php.ini settings' => 'configuraziun da php.ini', 55 | 'The PHP safe_mode is not enabled.' => 'Il safe_mode da PHP n\'è betg activà.', 56 | 'The PHP safe_mode is enabled.' => 'Il safe_mode da PHP è activà.', 57 | 'It is recommended to disable the safe_mode in your php.ini or server control panel, otherwise the PHP process it not allowed to create or manipulate files and Contao cannot work properly.' => 'Igl è recummandà da deactivar il safe_mode en tia php.ini u en la panela da controlla da tes server. Uschiglio n\'è il process da PHP betg autorisà da crear u manipular datotecas e Contao na funcziunescha betg correctamain.', 58 | 'Creating a test folder' => 'Crear in ordinatur da test', 59 | 'The test folder could be created (owner: %s, chmod: %s).' => 'L\'ordinatur da test ha pudì vengir creà (possessur: %s, chmod: %s).', 60 | 'The test folder could not be created.' => 'L\'ordinatur da test na pudeva betg vegnir creà.', 61 | 'It seems that the PHP process does not have enough permissions to create folders on your server.' => 'I para ch\'il process da PHP n\'ha betg avunda dretgs per crear ordinaturs sin tes server.', 62 | 'The test folder does not have the correct owner or chmod settings.' => 'Las infurmaziuns davart il possessur u chmod da l\'ordinatur da test n\'èn betg correctas.', 63 | 'The test folder is owned by %s (should be %s) and has the chmod settings %s (should be %s).' => 'Il possessur da l\'ordinatur da test è %s (duess esser %s) e ha la configuraziun da chmod %s (duess esser %s).', 64 | '775, 755, 770, 750 or 705' => '775, 755, 770, 750 u 705', 65 | 'Creating a test file' => 'Crear ina datoteca da test', 66 | 'The test file could be created (owner: %s, chmod: %s).' => 'La datoteca da test è vegnida creada (possessur: %s, chmod: %s).', 67 | 'The test file could not be created.' => 'La dadoteca da test na pudeva betg vegir creada.', 68 | 'It seems that the PHP process does not have enough permissions to create files on your server.' => 'I para che quest process da PHP n\'ha betg avunda dretgs per crear datotecas sin tes server.', 69 | 'The test file does not have the correct owner or chmod settings.' => 'La datoteca da test n\'ha betg il correct possessur u la configuraziun da chmod correcta.', 70 | 'The test file is owned by %s (should be %s) and has the chmod settings %s (should be %s).' => 'La datoteca da test ha il possessur %s (duess esser %s) ed ha la configuraziun da chmod %s (duess esser %s).', 71 | '664, 644, 660, 640 or 604' => '664, 644, 660, 640 u 604', 72 | 'The PHP process is allowed to create files on this server.' => 'Il process da PHP è autorisà da crear datotecas sin quest server.', 73 | 'The PHP process is not allowed to create files on this server.' => 'Il process da PHP n\'è betg autorisà da crear datotecas sin quest server.', 74 | 'Overview' => 'Survista', 75 | 'You can install Contao 2.x' => 'Ti pos installar Contao 2.x', 76 | 'You cannot install Contao 2.x (requires PHP %s+)' => 'Ti na pos betg installar Contao 2.x (basegna PHP %s+)', 77 | 'You can install Contao 3.x' => 'Ti pos installar Contao 3.x', 78 | 'You cannot install Contao 3.x (requires PHP %s+)' => 'Ti na pos betg installar Contao 3.x (basegna PHP %s+)', 79 | 'You can install Contao 4.x' => 'Ti pos installar Contao 4.x', 80 | 'You cannot install Contao 4.x (requires PHP %s+)' => 'Ti na pos betg installar Contao 4.x (basegnà PHP %s+)', 81 | 'The file permissions cannot be checked.' => 'The file permissions cannot be checked.', 82 | 'More information …' => 'Ulteriuras infurmaziuns…', 83 | 'Additional services' => 'Servetschs supplementars', 84 | 'You can use the Live Update.' => 'Ti pos utilisar l\'actualisaziun directa.', 85 | 'You cannot use the Live Update.' => 'Ti na pos betg utilisar l\'actualisaziun directa.', 86 | 'The Composer package manager requirements cannot be checked.' => 'The Composer package manager requirements cannot be checked.', 87 | 'You can use the Composer package manager.' => 'Ti pos utilisar l\'administraziun da pachets Composer.', 88 | 'You cannot use the Composer package manager.' => 'Ti na pos betg utilisar l\'administraziun da pachets Composer.', 89 | 'You can use the Extension Repository.' => 'Ti pos utilisar il repository d\'extensiuns', 90 | 'You cannot use the Extension Repository.' => 'Ti na pos betg utilisar il repository d\'extensiuns.', 91 | 'Install Contao' => 'Installar Contao', 92 | 'Validate an existing installation' => 'Validar ina installaziun existenta', 93 | 'Installation' => 'Utensil d\'installaziun', 94 | 'Web installer' => 'Program d\'installaziun sur web', 95 | 'There is a Contao installation already. Are you looking for the %s?' => 'I exista gia ina installaziun da Contao. Tschertgas ti %s?', 96 | 'The automatic installation is not possible on your server due to safe_mode or file permission restrictions.' => 'L\'installaziun automatica n\'è betg pussaivla sin tes server pervia dal safe_mode u restricziuns dals dretgs da datotecas.', 97 | 'The automatic installation is possible on your server.' => 'L\'installaziun automatica è pussaivla sin tes server.', 98 | 'The automatic installation is not possible on your server.' => 'L\'installaziun automatica n\'è betg pussaivla sin tes server.', 99 | 'Your PHP installation either cannot connect to download.contao.org or is missing the PHP extension cURL or Zip.' => 'Tia installaziun da PHP n\'è betg abla da connectar a download.contao.org u che las extensiuns cURL u Zip mancan.', 100 | 'Manual installation' => 'Installaziun manuala', 101 | 'Go to %s and download the latest Contao version.' => 'Va sin %s e telechargia l\'ultima versiun da Contao.', 102 | 'Extract the download archive and upload the files to your server using an (S)FTP client.' => 'Extrahescha las datotecas telechargiadas ed las chargia sin tes server cun in program dad (S)FTP.', 103 | 'Open the Contao install tool by adding "/contao/install.php" to the URL of your installation.' => 'Avra l\'utensil d\'installaziun da Contao entras agiuntar "/contao/install.php" a l\'URL da tia installaziun.', 104 | 'Target version' => 'Versiun da destinaziun', 105 | 'Start the installation' => 'Cumenzar l\'installaziun', 106 | 'Installation failed' => 'Errur durant l\'installaziun', 107 | 'Installation complete' => 'Installaziun cumpletta', 108 | 'Contao %s has been installed in %s.' => 'Contao %s è vegnì installà en %s.', 109 | 'Open the Contao install tool' => 'Avrir l\'utensil d\'installaziun da Contao', 110 | 'Live Update' => 'Actualisaziun directa (Live Update)', 111 | 'Phar has been added to the PHP core in version 5.3, so you require at least PHP version %s to use .phar files. If you have PHP 5.2, you might be able to use .phar files by installing the PECL phar extension (see %s).' => 'Phar è vegnì agiuntà al core da PHP en la versiun 5.3, ti dovras pia almain la versiun %s da PHP per utilisar datotecas da .phar. Sche ti has PHP 5.2 es ti forsa abel dad utilisar datotecas .phar entras installar l\'externsiun PECL da phar (guarda %s)', 112 | 'PHP OpenSSL extension' => 'Extensiun OpenSSL da PHP', 113 | 'The PHP OpenSSL extension is enabled.' => 'L\'extensiun OpenSSL da PHP è activada.', 114 | 'The PHP OpenSSL extension is not enabled.' => 'L\'extensiun OpenSSL da PHP n\'è betg activada.', 115 | 'The PHP OpenSSL extension is required to set up a secure connection to the Live Update server. Enable it in your php.ini.' => 'L\'extensiun OpenSSL da PHP è necessaria per stabilir ina connexiun segira cun il server per l\'actualisaziun directa. Activescha quai en tia php.ini.', 116 | 'The ionCube Loader is not enabled or at least at version 4.0.9.' => 'Il ionCube Loader n\'è betg activà u almain a versiun 4.0.9.', 117 | 'An old version of the ionCube Loader prior to version 4.0.9 is installed.' => 'Ina versiun dal ionCube Loader pli veglia che la versiun 4.0.9 è installada.', 118 | 'Before version 4.0.9, the ionCube Loader was incompatible with Phar archives. Either upgrade to the latest version or disable the module. More information is available here: %s' => 'Avant la versiun 4.0.9 era il ionCube Loader incumpatibel cun archivs da Phar. Actualisescha u a la pli nova versiun e deactivescha il modul. Dapli infurmaziuns chattas ti qua: %s', 119 | 'Detect Unicode' => 'Detectar Unicode', 120 | 'The --enable-zend-multibyte flag is not set or detect_unicode is disabled.' => 'Il flag --enable-zend-multibyte n\'è betg definì u detect_unicode è deactivà.', 121 | 'The detect_unicode settings on your server are not correct.' => 'La configuraziun da detect_unicode da tes server n\'è betg correcta.', 122 | 'If PHP is compiled with the --enable-zend-multibyte flag, you have to explicitly disable detect_unicode in your php.ini: detect_unicode = Off. This is a PHP bug which might be fixed in the future. More information is available here: %s' => 'Sche PHP è compilà cun il flag --enable-zend-multibyte stos ti explicitamain deactivar detect_unicode en tia php.ini: detect_unicode = Off. Quai è in sbagl da PHP che pudess vegnir schlià en futur. Ulteriuras infurmaziuns chattas qua: %s', 123 | 'You are not using FastCGI and eAccelerator.' => 'Ti n\'utiliseschas betg FastCGI ed eAccelerator.', 124 | 'You are using FastCGI and eAccelerator.' => 'Ti utiliseschas FastCGI ed eAccelerator.', 125 | 'It seems that FastCGI in combination with the eAccelerator extension is buggy when it comes to Phar archives. You can either disable the eAccelerator extension or use a different PHP cache instead (e.g. FastCGI+APC).' => 'I para che la cumbinaziun da las extensiuns FastCGI ed eAccelerator po chaschunar sbagls en connex cun archivs da phar. Ti pos u deactivar l\'extensiun eAccelerator u utilisar in auter cache da PHP (p. ex. FastCGI+APC).', 126 | 'Connection test' => 'Test da la connexiun', 127 | 'A connection to update.contao.org could be established.' => 'Igl è reussì da connectar ad update.contao.org.', 128 | 'A connection to update.contao.org could not be established.' => 'I n\'è betg reussì da connectar ad update.contao.org.', 129 | 'Maybe the request has been blocked by a firewall. Please contact your server administrator.' => 'Eventualmain è la dumonda vegnida bloccada d\'ina firewall. Contactescha tes administratur dal server.', 130 | 'You can use the Live Update on this server.' => 'Ti pos utilisar l\'actualisaziun directa (Live Update) sin quest server.', 131 | 'You cannot use the Live Update on this server.' => 'Ti na pos betg utilisar l\'actualisaziun directa (Live Update) sin quest server.', 132 | 'Extension Repository' => 'Repository d\'extensiuns', 133 | 'PHP SOAP extension' => 'Extensiun SOAP da PHP', 134 | 'The PHP SOAP extension is available.' => 'L\'extensiun SOAP da PHP è disponibla', 135 | 'The PHP SOAP extension is not available.' => 'L\'extensiun SOAP da PHP n\'è betg disponibla', 136 | 'The PHP SOAP extension is required to communicate with the Extension Repository server. You can enable it by compiling PHP with the --enable-soap flag. Depending on your Contao version, you might also be able to use the %s extension.' => 'L\'extensiun SOAP da PHP è necessari per communitgar cun il server dal repository d\'extensiuns. Ti pos l\'activar entras compilar PHP cun il flag --enable-soap. Dependent da tia versiun da Contao pos ti era esser abel dad utilisar l\'extensiun %s.', 137 | 'A connection to contao.org could be established.' => 'Ina connexiun a contao.org è vegnida stabilida.', 138 | 'A connection to contao.org could not be established.' => 'I na pudeva betg vegnir stabilì ina connexiun a contao.org.', 139 | 'You can use the Extension Repository on this server.' => 'Ti pos utilisar il repository d\'extensiuns sin quest server.', 140 | 'You cannot use the Extension Repository on this server.' => 'Ti na pos betg utilisar il repository d\'extensiuns sin quest server.', 141 | 'Validate an installation' => 'Validar ina installaziun', 142 | 'Could not find a Contao installation.' => 'Impussibel da chattar ina installaziun da Contao.', 143 | 'To validate an existing installation, please upload the "check" folder to your installation directory.' => 'Per validar ina installaziun existento stos ti chargiar l\'ordinatur check en tes ordinatur da l\'installaziun.', 144 | 'Unknown version' => 'Versiun nunenconuschenta', 145 | 'The installed version %s is not (yet) supported.' => 'La versiun installada (%s) na vegn anc betg sustegnida.', 146 | 'There is no version file for your Contao installation. Are you using a stable Contao version and do you have the latest version of the Contao Check?' => 'I n\'exista nagina datoteca da versiun per tia installaziun da Contao. Utiliseschas ti ina versiun stabla da Contao ed has ti l\'ultima versiun dal check da Contao?', 147 | 'Version' => 'Versiun', 148 | 'Found a Contao %s installation.' => 'Chattà ina sintallaziun da Contao %s.', 149 | 'Missing files' => 'Datotecas mancantas', 150 | 'Corrupt files' => 'Datotecas corruptas', 151 | 'Missing optional files' => 'Datotecas opziunalas mancantas', 152 | 'Your installation is up to date.' => 'Tia installaziun è actuala.', 153 | 'Your installation is not up to date.' => 'Tia installaziun n\'è betg actuala.', 154 | ); 155 | -------------------------------------------------------------------------------- /check/i18n/sl.php: -------------------------------------------------------------------------------- 1 | 'Composer paketni upravitelj', 14 | 'PHP %s or greater' => 'PHP %s ali novejši', 15 | 'You have PHP version %s.' => 'Nameščena PHP verzija %s.', 16 | 'Composer requires at least PHP version %s.' => 'Composer zahteva najmanj PHP verzijo %s.', 17 | 'PHP Phar extension' => 'PHP Phar razširitev', 18 | 'The PHP Phar extension is enabled.' => 'PHP Phar razširitev je nameščena.', 19 | 'The PHP Phar extension is not enabled.' => 'PHP Phar razširitev ni nameščena.', 20 | 'The PHP Phar extension is part of the PHP core since PHP 5.3 and has to be explicitly disabled using the --disable-phar flag. Recompile PHP without the flag.' => 'PHP Phar razširitev je sestavni del PHP jedra od verzije PHP 5.3 in mora biti izrecno onemogočena z uporabo --disable-phar zastavico. Ponovno prevedite PHP brez zastavice.', 21 | 'PHP cURL extension' => 'PHP cURL razširitev', 22 | 'The PHP cURL extension is available.' => 'PHP cURL razširitev je nameščena.', 23 | 'The PHP cURL extension is not available.' => 'PHP cURL razširitev ni nameščena.', 24 | 'The PHP cURL extension is required to communicate with the package server. You can enable it by compiling PHP with the --enable-curl flag.' => 'PHP cURL razširitev je potrebna za komunikacijo s paketnim strežnikom. Omogočite jo s ponovnim prevodom PHP z --enable-curl zastavico.', 25 | 'PHP APC extension' => 'PHP APC razširitev', 26 | 'The PHP APC extension is not installed.' => 'PHP APC razširitev ni nameščena.', 27 | 'The PHP APC extension is installed.' => 'PHP APC razširitev je nameščena.', 28 | 'Using the PHP APC extension with Composer can lead to unexpected "cannot redeclare class" errors.' => 'Uporaba PHP APC razširitve s Composerjem lahko privede do nepričakovane "cannot redeclare class" napake.', 29 | 'Suhosin extension' => 'Suhosin razširitev', 30 | 'The Suhosin extension is not installed or correctly configured for .phar files.' => 'Suhosin razširitev ni nameščena ali pravilno nastavljena za .phar datoteke.', 31 | 'The Suhosin extension does not allow to run .phar files.' => 'Suhosin razširitev ne dovoli zagnati .phar datotek.', 32 | 'You have to add "phar" to the list of allowed streams in your php.ini: suhosin.executor.include.whitelist = phar' => 'Potrebno je dodati "phar" na seznam dovoljenih pretokov v php.ini: suhosin.executor.include.whitelist = phar', 33 | 'allow_url_fopen' => 'allow_url_fopen', 34 | 'The PHP flag "allow_url_fopen" is set.' => 'PHP zastavica "allow_url_fopen" je nastavljena.', 35 | 'The PHP flag "allow_url_fopen" is not set.' => 'PHP zastavica "allow_url_fopen" ni nastavljena.', 36 | 'To download the installation files, Composer requires the "allow_url_fopen" flag to be set in the php.ini.' => 'Za prenos namestitvenih datotek Composer potrebuje "allow_url_fopen" zastavico nastavljeno v php.ini', 37 | 'File permissions' => 'Dovoljenja datoteke', 38 | 'The "posix_getpwuid" function is not available.' => 'The "posix_getpwuid" function is not available.', 39 | 'File permissions cannot be tested, because the posix_getpwuid function has been disabled. Please contact your server administrator.' => 'File permissions cannot be tested, because the posix_getpwuid function has been disabled. Please contact your server administrator.', 40 | 'The PHP process is allowed to create files.' => 'PHP procesu je dovoljeno ustvarjanje datotek.', 41 | 'The PHP process is not allowed to create files.' => 'PHP procesu ni dovoljeno ustvarjanje datotek.', 42 | 'The PHP process is not allowed to create or manipulate files. Please adjust your server configuration accordingly.' => 'PHP procesu ni dovoljeno ustvarjati ali upravljati z datotekami. Prosimo prilagodite ustrezno nastavitev na strežniku.', 43 | 'shell_exec (optional)' => 'shell_exec (poljubno)', 44 | 'The PHP function "shell_exec" is available.' => 'PHP funkcija "shell_exec" je na voljo.', 45 | 'The PHP function "shell_exec" is not available.' => 'PHP funkcija "shell_exec" ni na voljo.', 46 | 'The "shell_exec" function is optionally required to run the Composer process in the background.' => 'PHP funkcija "shell_exec" je pogojno potrebna za zagon Composerja v ozadju.', 47 | 'proc_open (optional)' => 'proc_open (poljubno)', 48 | 'The PHP function "proc_open" is available.' => 'PHP funkcija "proc_open" je na voljo.', 49 | 'The PHP function "proc_open" is not available.' => 'PHP funkcija "proc_open" ni na voljo.', 50 | 'The "proc_open" function is optionally required to run the package manager in dev mode.' => 'PHP funkcija "proc_open" je po izbiri potrebna za zagon upravljalnika paketov v načinu "dev mode".', 51 | 'You can use the Composer package manager on this server.' => 'Upravljalnik paketov Composer se lahko uporablja na tem strežniku.', 52 | 'You cannot use the Composer package manager on this server.' => 'Upravljalnik paketov Composer ni mogoče uporabljati na tem strežniku.', 53 | 'Go back' => 'Nazaj', 54 | 'php.ini settings' => 'php.ini nastavitve', 55 | 'The PHP safe_mode is not enabled.' => 'PHP safe_mode ni omogočen.', 56 | 'The PHP safe_mode is enabled.' => 'PHP safe_mode je omogočen.', 57 | 'It is recommended to disable the safe_mode in your php.ini or server control panel, otherwise the PHP process it not allowed to create or manipulate files and Contao cannot work properly.' => 'Priporočeno je izklopiti safe_mode v php.ini datoteki ali na strežniški nadzorni plošči, drugače PHP procesu ni dovoljeno ustvariti ali manipulirati z datotekami in Contao ne more delovati pravilno.', 58 | 'Creating a test folder' => 'Ustvari nov testni direktorij', 59 | 'The test folder could be created (owner: %s, chmod: %s).' => 'Testni direktorij je lahko ustvarjen (lastnik: %s, chmod: %s).', 60 | 'The test folder could not be created.' => 'Testnega direktorija ni bilo mogoče ustvariti.', 61 | 'It seems that the PHP process does not have enough permissions to create folders on your server.' => 'Kaže, da PHP proces nima zadosti pravic, da bi ustvaril direktorij na vašem strežniku.', 62 | 'The test folder does not have the correct owner or chmod settings.' => 'Testni direktorij nima pravilnega lastnika ali chmod nastavitev.', 63 | 'The test folder is owned by %s (should be %s) and has the chmod settings %s (should be %s).' => 'Testni direktorij je v lasti %s (moral bi biti v lasti %s) in ima chmod nastavitve %s (morale bi biti %s).', 64 | '775, 755, 770, 750 or 705' => '775, 755, 770, 750 ali 705', 65 | 'Creating a test file' => 'Ustvarjanje testne datoteke', 66 | 'The test file could be created (owner: %s, chmod: %s).' => 'Testna datoteka je lahko ustvarjena (lastnik: %s, chmod: %s).', 67 | 'The test file could not be created.' => 'Testne datoteke ni bilo mogoče ustvariti.', 68 | 'It seems that the PHP process does not have enough permissions to create files on your server.' => 'Kaže, da PHP proces nima zadosti pravic, da bi ustvaril datoteke na vašem strežniku.', 69 | 'The test file does not have the correct owner or chmod settings.' => 'Testna datoteka nima pravilnega lastnika ali chmod nastavitev.', 70 | 'The test file is owned by %s (should be %s) and has the chmod settings %s (should be %s).' => 'Testna datoteka je v lasti %s (morala bi biti v lasti %s) in ima chmod nastavitve %s (morale bi biti %s).', 71 | '664, 644, 660, 640 or 604' => '664, 644, 660, 640 ali 604', 72 | 'The PHP process is allowed to create files on this server.' => 'PHP procesu je dovoljeno ustvarjanje datotek na tem strežniku.', 73 | 'The PHP process is not allowed to create files on this server.' => 'PHP procesu ni dovoljeno ustvarjanje datotek na tem strežniku.', 74 | 'Overview' => 'Pregled', 75 | 'You can install Contao 2.x' => 'Lahko namestite Contao 2.x', 76 | 'You cannot install Contao 2.x (requires PHP %s+)' => 'Ni mogoče namestiti Contao 2.x (potreben je PHP %s+)', 77 | 'You can install Contao 3.x' => 'Lahko namestite Contao 3.x', 78 | 'You cannot install Contao 3.x (requires PHP %s+)' => 'Ni mogoče namestiti Contao 3.x (potreben je PHP %s+)', 79 | 'You can install Contao 4.x' => 'Lahko namestite Contao 4.x', 80 | 'You cannot install Contao 4.x (requires PHP %s+)' => 'Ni mogoče namestiti Contao 4.x (potreben je PHP %s+)', 81 | 'The file permissions cannot be checked.' => 'The file permissions cannot be checked.', 82 | 'More information …' => 'Več informacij ...', 83 | 'Additional services' => 'Dodatne storitve', 84 | 'You can use the Live Update.' => 'Lahko uporabljate Live Update.', 85 | 'You cannot use the Live Update.' => 'Live Update ni mogoče uporabljati.', 86 | 'The Composer package manager requirements cannot be checked.' => 'The Composer package manager requirements cannot be checked.', 87 | 'You can use the Composer package manager.' => 'Lahko uporabljate upravljalnik paketov Composer.', 88 | 'You cannot use the Composer package manager.' => 'Upravljalnika paketov Composer ni mogoče uporabljati.', 89 | 'You can use the Extension Repository.' => 'Lahko uporabljate Extension Repository.', 90 | 'You cannot use the Extension Repository.' => ' Extension Repository ni mogoče uporabljati.', 91 | 'Install Contao' => 'Namestite Contao', 92 | 'Validate an existing installation' => 'Preverite obstoječo namestitev', 93 | 'Installation' => 'Namestitev', 94 | 'Web installer' => 'Spletna namestitev', 95 | 'There is a Contao installation already. Are you looking for the %s?' => 'Contao namestitev že obstaja. Ali iščete %s?', 96 | 'The automatic installation is not possible on your server due to safe_mode or file permission restrictions.' => 'Samodejna namestitev ni mogoče na vašem strežniku zaradi safe_mode ali omejitev pravic datotek.', 97 | 'The automatic installation is possible on your server.' => 'Samodejna namestitev je mogoča na vašem strežniku.', 98 | 'The automatic installation is not possible on your server.' => 'Samodejna namestitev ni mogoča na vašem strežniku.', 99 | 'Your PHP installation either cannot connect to download.contao.org or is missing the PHP extension cURL or Zip.' => 'Vaša PHP namestitev se ne more povezati na download.contao.org ali manjkajo PHP razširitve cURL ali Zip.', 100 | 'Manual installation' => 'Ročna namestitev', 101 | 'Go to %s and download the latest Contao version.' => 'Pojdite na %s in prenesite najnovejšo Contao različico.', 102 | 'Extract the download archive and upload the files to your server using an (S)FTP client.' => 'Razširite prenešeni arhiv in naložite datoteke na vaš strežnik s pomočjo (S)FTP odjemalca.', 103 | 'Open the Contao install tool by adding "/contao/install.php" to the URL of your installation.' => 'Odprite Contao namestitveno orodje, tako da dodate "/contao/install.php" na konec URLja vaše namestitve.', 104 | 'Target version' => 'Ciljna različica', 105 | 'Start the installation' => 'Začnite namestitev', 106 | 'Installation failed' => 'Namestitev je neuspešna', 107 | 'Installation complete' => 'Namestitev končana', 108 | 'Contao %s has been installed in %s.' => 'Contao %s je bil nameščen v %s.', 109 | 'Open the Contao install tool' => 'Odprite Contao namestitveno orodje', 110 | 'Live Update' => 'Live Update', 111 | 'Phar has been added to the PHP core in version 5.3, so you require at least PHP version %s to use .phar files. If you have PHP 5.2, you might be able to use .phar files by installing the PECL phar extension (see %s).' => 'Phar je bil dodan PHP jedru v različici 5.3, tako potrebujete PHP različico najmanj %s da bi uporabili .phar datoteke. Če imate PHP 5.2 lahko mogoče uporabite .phar datoteke z namestitvijo PECL phar razširitve (preverite %s).', 112 | 'PHP OpenSSL extension' => 'PHP OpenSSL razširitev', 113 | 'The PHP OpenSSL extension is enabled.' => 'PHP OpenSSL razširitev je nameščena.', 114 | 'The PHP OpenSSL extension is not enabled.' => 'PHP OpenSSL razširitev ni nameščena.', 115 | 'The PHP OpenSSL extension is required to set up a secure connection to the Live Update server. Enable it in your php.ini.' => 'PHP OpenSSL razširitev je potrebna za vspostavitev varne povezave z Live Update strežnikom. Omogočite jo v vaših php.ini nastavitvah.', 116 | 'The ionCube Loader is not enabled or at least at version 4.0.9.' => 'ionCube Loader ni nameščen ali ni 4.0.9.+ različica.', 117 | 'An old version of the ionCube Loader prior to version 4.0.9 is installed.' => 'Nameščena je starejša ionCube Loader različica kot 4.0.9.', 118 | 'Before version 4.0.9, the ionCube Loader was incompatible with Phar archives. Either upgrade to the latest version or disable the module. More information is available here: %s' => 'Pred različico 4.0.9. ionCube Loader ni bil združljiv z Phar arhivi. Ali posodobite na najnovejšo različico ali izklopite modul. Več informacij je na voljo tukaj: %s', 119 | 'Detect Unicode' => 'Zaznaj Unicode', 120 | 'The --enable-zend-multibyte flag is not set or detect_unicode is disabled.' => 'Zastavica --enable-zend-multibyte je nastavljena ali detect_unicode ni omogočen.', 121 | 'The detect_unicode settings on your server are not correct.' => 'detect_unicode nastavitve na vašem strežniki niso pravilne.', 122 | 'If PHP is compiled with the --enable-zend-multibyte flag, you have to explicitly disable detect_unicode in your php.ini: detect_unicode = Off. This is a PHP bug which might be fixed in the future. More information is available here: %s' => 'Če je PHP preveden z --enable-zend-multibyte zastavico, morate obvezno onemogočiti detect_unicode v vaših php.ini nastavitvah: detect_unicode = Off. Ta PHP hrošč bo mogoče odpravljen v prihodnosti. Več informacij je na voljo tukaj: %s', 123 | 'You are not using FastCGI and eAccelerator.' => 'Ne uporabljate FastCGI in eAccelerator.', 124 | 'You are using FastCGI and eAccelerator.' => 'Uporabljate FastCGI in eAccelerator.', 125 | 'It seems that FastCGI in combination with the eAccelerator extension is buggy when it comes to Phar archives. You can either disable the eAccelerator extension or use a different PHP cache instead (e.g. FastCGI+APC).' => 'Kaže, da je FastCGI v kombinaciji z eAccelerator razširitvijo nekoliko hroščast kadar se uporabljajo Phar arhivi. Lahko onemogočite eAccelerator razširitev ali uporabite različno PHP cache metodo (recimo FastCGI+APC). ', 126 | 'Connection test' => 'Test povezave', 127 | 'A connection to update.contao.org could be established.' => 'Povezava z update.contao.org je bila vspostavljena.', 128 | 'A connection to update.contao.org could not be established.' => 'Povezave z update.contao.org ni bilo mogoče vzpostaviti.', 129 | 'Maybe the request has been blocked by a firewall. Please contact your server administrator.' => 'Zahtevo je mogoče zaustavil požarni zid. Kontaktirajte vašega sistemskega administratorja.', 130 | 'You can use the Live Update on this server.' => 'Na tem strežniku je mogoče uporabljati Live Update.', 131 | 'You cannot use the Live Update on this server.' => 'Na tem strežniku ni mogoče uporabljati Live Update.', 132 | 'Extension Repository' => 'Extension Repository', 133 | 'PHP SOAP extension' => 'PHP SAOP razširitev', 134 | 'The PHP SOAP extension is available.' => 'PHP SAOP razširitev je na voljo.', 135 | 'The PHP SOAP extension is not available.' => 'PHP SAOP razširitev ni na voljo.', 136 | 'The PHP SOAP extension is required to communicate with the Extension Repository server. You can enable it by compiling PHP with the --enable-soap flag. Depending on your Contao version, you might also be able to use the %s extension.' => 'PHP SAOP razširitev je potrebna za povezavo z Extension Repository strežnikom. Razširitev lahko omogočite z prevodom PHP in nastavljeno --enable-saop zastavico. Odvisno od Contao različice, lahko mogoče uporabite tudi %s razširitev.', 137 | 'A connection to contao.org could be established.' => 'Povezava z contao.org je bila vzpostavljena.', 138 | 'A connection to contao.org could not be established.' => 'Povezave z contao.org ni bilo mogoče vzpostaviti.', 139 | 'You can use the Extension Repository on this server.' => 'Na tem strežniku lahko uporabljate Extension Repository.', 140 | 'You cannot use the Extension Repository on this server.' => 'Na tem strežniku ni mogoče uporabljati Extension Repository.', 141 | 'Validate an installation' => 'Preverite namestitev', 142 | 'Could not find a Contao installation.' => 'Contao namestitve ni bilo mogoče najti.', 143 | 'To validate an existing installation, please upload the "check" folder to your installation directory.' => 'Da bi preverili namestitev, naložite "check" direktorij v vaš namestitveni direktorij.', 144 | 'Unknown version' => 'Neznana različica', 145 | 'The installed version %s is not (yet) supported.' => 'Namestitvena različica %s (še) ni podprta.', 146 | 'There is no version file for your Contao installation. Are you using a stable Contao version and do you have the latest version of the Contao Check?' => 'Manjka datoteka z različico vaše Contao namestitve. Ali uporabljate stabilno Contao različico in ali imate najnovejšo Contao Check različico?', 147 | 'Version' => 'Različica', 148 | 'Found a Contao %s installation.' => 'Najdena Contao %s namestitev.', 149 | 'Missing files' => 'Manjkajoče datoteke', 150 | 'Corrupt files' => 'Poškodovane datoteke', 151 | 'Missing optional files' => 'Manjkajoče neobvezne datoteke', 152 | 'Your installation is up to date.' => 'Vaša namestitev je posodobljena.', 153 | 'Your installation is not up to date.' => 'Vaša namestitev ni posodobljena.', 154 | ); 155 | -------------------------------------------------------------------------------- /check/i18n/sv.php: -------------------------------------------------------------------------------- 1 | 'Composer pakethanterare', 14 | 'PHP %s or greater' => 'PHP %s eller högre', 15 | 'You have PHP version %s.' => 'Du har PHP-version %s.', 16 | 'Composer requires at least PHP version %s.' => 'Composer kräver som minst PHP version %s', 17 | 'PHP Phar extension' => 'PHP Phar-tillägg', 18 | 'The PHP Phar extension is enabled.' => 'PHP Phar-tillägg är aktiverat.', 19 | 'The PHP Phar extension is not enabled.' => 'PHP Phar-tillägg är inte aktiverat.', 20 | 'The PHP Phar extension is part of the PHP core since PHP 5.3 and has to be explicitly disabled using the --disable-phar flag. Recompile PHP without the flag.' => 'PHP Phar-tillägget är en del av PHP-kärnan sedan PHP 5.3 och måste slås av genom att använda flaggan --disable-phar. Omkompilera PHP utan flaggan.', 21 | 'PHP cURL extension' => 'PHP cURL extension', 22 | 'The PHP cURL extension is available.' => 'PHP cURL extension är tillgänglig.', 23 | 'The PHP cURL extension is not available.' => 'PHP cURL extension är inte tillgänglig.', 24 | 'The PHP cURL extension is required to communicate with the package server. You can enable it by compiling PHP with the --enable-curl flag.' => 'PHP cURL extension krävs för att kunna kommunicera med paket-servern. Du kan aktivera den genom att kompilera PHP med flaggan --enable-curl.', 25 | 'PHP APC extension' => 'PHP APC extension', 26 | 'The PHP APC extension is not installed.' => 'PHP APC extension är inte installerad.', 27 | 'The PHP APC extension is installed.' => 'PHP APC extension är installerad.', 28 | 'Using the PHP APC extension with Composer can lead to unexpected "cannot redeclare class" errors.' => 'Användandet av PHP APC extension tillsammans med Composer kan leda till oväntade "cannot redeclare class"-fel.', 29 | 'Suhosin extension' => 'Suhosin-tillägg', 30 | 'The Suhosin extension is not installed or correctly configured for .phar files.' => 'Suhosin-tillägg är inte installerat eller korrekt konfigurerat för .phar-filer.', 31 | 'The Suhosin extension does not allow to run .phar files.' => 'Suhosin-tillägget tillåter inte att .phar-filer körs.', 32 | 'You have to add "phar" to the list of allowed streams in your php.ini: suhosin.executor.include.whitelist = phar' => 'Du måste lägga till "phar" till listan över tillåtna strömmar i din php.ini: suhosin.executor.include.whitelist = phar', 33 | 'allow_url_fopen' => 'allow_url_fopen', 34 | 'The PHP flag "allow_url_fopen" is set.' => 'PHP-flaggan "allow_url_fopen" är aktiv.', 35 | 'The PHP flag "allow_url_fopen" is not set.' => 'PHP-flaggan "allow_url_fopen" är inaktiv.', 36 | 'To download the installation files, Composer requires the "allow_url_fopen" flag to be set in the php.ini.' => 'För att hämta hem installationsfiler kräver Composer att "allow_url_fopen"-flaggan är aktiv i php.ini.', 37 | 'File permissions' => 'Filbehörigheter', 38 | 'The "posix_getpwuid" function is not available.' => 'The "posix_getpwuid" function is not available.', 39 | 'File permissions cannot be tested, because the posix_getpwuid function has been disabled. Please contact your server administrator.' => 'File permissions cannot be tested, because the posix_getpwuid function has been disabled. Please contact your server administrator.', 40 | 'The PHP process is allowed to create files.' => 'PHP-processen får skapa filer.', 41 | 'The PHP process is not allowed to create files.' => 'PHP-processen får inte skapa filer.', 42 | 'The PHP process is not allowed to create or manipulate files. Please adjust your server configuration accordingly.' => 'PHP-processen tillåts inte att skapa eller ändra filer. Justera din serverkonfiguration.', 43 | 'shell_exec (optional)' => 'shell_exec (frivilligt)', 44 | 'The PHP function "shell_exec" is available.' => 'PHP-funktionen "shell_exec" är tillgänglig.', 45 | 'The PHP function "shell_exec" is not available.' => 'PHP-funktionen "shell_exec" är inte tillgänglig.', 46 | 'The "shell_exec" function is optionally required to run the Composer process in the background.' => '"shell_exec"-funktionen är krävs för att kunna köra Composer-processen i bakgrunden.', 47 | 'proc_open (optional)' => 'proc_open (frivilligt)', 48 | 'The PHP function "proc_open" is available.' => 'PHP funktionen "proc_open" är tillgänglig.', 49 | 'The PHP function "proc_open" is not available.' => 'PHP-funktionen "proc_open" är tillgänglig.', 50 | 'The "proc_open" function is optionally required to run the package manager in dev mode.' => '"proc_open"-funktionen är valbart nödvändig för att köra pakethanteraren i dev-läge.', 51 | 'You can use the Composer package manager on this server.' => 'Du kan använda Composer pakethanterare på denna server.', 52 | 'You cannot use the Composer package manager on this server.' => 'Du kan inte använda Composer pakethanterare på denna server.', 53 | 'Go back' => 'Tillbaka', 54 | 'php.ini settings' => 'php.ini-inställningar', 55 | 'The PHP safe_mode is not enabled.' => 'PHP safe_mode är inte aktiverat.', 56 | 'The PHP safe_mode is enabled.' => 'PHP safe_mode är aktiverat.', 57 | 'It is recommended to disable the safe_mode in your php.ini or server control panel, otherwise the PHP process it not allowed to create or manipulate files and Contao cannot work properly.' => 'Det är rekommenderat att slå av safe_mode i din php.ini-fil eller i serverns kontrollpanel. Annars kommer PHP-processer inte tillåtas att skapa eller ändra i filer vilket gör att Contao inte kommer att fungera som det ska.', 58 | 'Creating a test folder' => 'Skapa en testmapp', 59 | 'The test folder could be created (owner: %s, chmod: %s).' => 'Testmappen kunde skapas (ägare: %s, chmod: %s).', 60 | 'The test folder could not be created.' => 'Testmappen kunde inte skapas.', 61 | 'It seems that the PHP process does not have enough permissions to create folders on your server.' => 'Det verkar som att PHP-processen inte har tillräckliga behörigheter för att skapa mappar på din server.', 62 | 'The test folder does not have the correct owner or chmod settings.' => 'Testmappen har inte korrekt ägare och chmod-inställningar.', 63 | 'The test folder is owned by %s (should be %s) and has the chmod settings %s (should be %s).' => 'Testmappen ägs av %s (borde vara %s) och har chmod-inställningarna %s (borde vara %s).', 64 | '775, 755, 770, 750 or 705' => '775, 755, 770, 750 eller 705', 65 | 'Creating a test file' => 'Skapa en testfil', 66 | 'The test file could be created (owner: %s, chmod: %s).' => 'Testfilen kunde skapas (ägare: %s, chmod: %s).', 67 | 'The test file could not be created.' => 'Testfilen kunde inte skapas.', 68 | 'It seems that the PHP process does not have enough permissions to create files on your server.' => 'Det verkar som att PHP-processen inte har tillräckliga behörigheter för att skapa filer på din server.', 69 | 'The test file does not have the correct owner or chmod settings.' => 'Testfilen har inte korrekt ägare och chmod-inställningar.', 70 | 'The test file is owned by %s (should be %s) and has the chmod settings %s (should be %s).' => 'Testfilen ägs av %s (borde vara %s) och har chmod-inställningarna %s (borde vara %s).', 71 | '664, 644, 660, 640 or 604' => '664, 644, 660, 640 eller 604', 72 | 'The PHP process is allowed to create files on this server.' => 'PHP-processen får skapa filer på servern.', 73 | 'The PHP process is not allowed to create files on this server.' => 'PHP-processen får inte skapa filer på servern.', 74 | 'Overview' => 'Översikt', 75 | 'You can install Contao 2.x' => 'Du kan installera Contao 2.x', 76 | 'You cannot install Contao 2.x (requires PHP %s+)' => 'Du kan inte installera Contao 2.x (kräver PHP %s+)', 77 | 'You can install Contao 3.x' => 'Du kan installera Contao 3.x', 78 | 'You cannot install Contao 3.x (requires PHP %s+)' => 'Du kan inte installera Contao 3.x (kräver PHP %s+)', 79 | 'You can install Contao 4.x' => 'Du kan installera Contao 4.x', 80 | 'You cannot install Contao 4.x (requires PHP %s+)' => 'Du kan inte installera Contao 4.x (kräver PHP %s+)', 81 | 'The file permissions cannot be checked.' => 'The file permissions cannot be checked.', 82 | 'More information …' => 'Mer information...', 83 | 'Additional services' => 'Ytterligare tjänster', 84 | 'You can use the Live Update.' => 'Du kan använda Live Update.', 85 | 'You cannot use the Live Update.' => 'Du kan ej använda Live Update.', 86 | 'The Composer package manager requirements cannot be checked.' => 'The Composer package manager requirements cannot be checked.', 87 | 'You can use the Composer package manager.' => 'Du kan använda Composer pakethanterare.', 88 | 'You cannot use the Composer package manager.' => 'Du kan inte använda Composer pakethanterare.', 89 | 'You can use the Extension Repository.' => 'Du kan använda Plugin-katalogen.', 90 | 'You cannot use the Extension Repository.' => 'Du kan ej använda Plugin-katalogen.', 91 | 'Install Contao' => 'Installera Contao', 92 | 'Validate an existing installation' => 'Validera en existerande installation', 93 | 'Installation' => 'Contaos installationsverktyg', 94 | 'Web installer' => 'Webb-installerare', 95 | 'There is a Contao installation already. Are you looking for the %s?' => 'Det finns redan en Contao installerad. Letar du efter %s?', 96 | 'The automatic installation is not possible on your server due to safe_mode or file permission restrictions.' => 'Automatisk installation är inte möjlig på din server p.g.a safe_mode eller restriktioner i filrättigheter.', 97 | 'The automatic installation is possible on your server.' => 'Automatisk installation är möjlig på din server.', 98 | 'The automatic installation is not possible on your server.' => 'Automatiska installation är inte möjlig på din server.', 99 | 'Your PHP installation either cannot connect to download.contao.org or is missing the PHP extension cURL or Zip.' => 'Din PHP-installation kunde antingen inte ansluta till download.contao.org eller så saknas PHP-tillägget cURL eller Zip.', 100 | 'Manual installation' => 'Manuell installation', 101 | 'Go to %s and download the latest Contao version.' => 'Gå till %s och ladda hem den senaste Contao-versionen.', 102 | 'Extract the download archive and upload the files to your server using an (S)FTP client.' => 'Extrahera det nedladdade arkivet och ladda upp filerna till din server med hjälp av en (S)FTP-klient.', 103 | 'Open the Contao install tool by adding "/contao/install.php" to the URL of your installation.' => 'Öppna Contaos installationsverktyg genom att lägga till "/contao/install.php" efter din hemsidas installations-URL.', 104 | 'Target version' => 'Målversion', 105 | 'Start the installation' => 'Starta installationen', 106 | 'Installation failed' => 'Installationen misslyckades', 107 | 'Installation complete' => 'Installationen färdig', 108 | 'Contao %s has been installed in %s.' => 'Contao %s har installerats i %s.', 109 | 'Open the Contao install tool' => 'Öppna Contaos installationsverktyg', 110 | 'Live Update' => 'Live Update', 111 | 'Phar has been added to the PHP core in version 5.3, so you require at least PHP version %s to use .phar files. If you have PHP 5.2, you might be able to use .phar files by installing the PECL phar extension (see %s).' => 'Phar har lagts till i PHP core i version 5.3, så du måste ha minst PHP version %s för att använda .phar-filer. Om du har PHP 5.2 så kan du använda .phar-filer om du installerar PECL phar extension (se %s).', 112 | 'PHP OpenSSL extension' => 'PHP OpenSSL-tillägg', 113 | 'The PHP OpenSSL extension is enabled.' => 'PHP OpenSSL-tillägg är aktiverat.', 114 | 'The PHP OpenSSL extension is not enabled.' => 'PHP OpenSSL-tillägg är inte aktiverat.', 115 | 'The PHP OpenSSL extension is required to set up a secure connection to the Live Update server. Enable it in your php.ini.' => 'PHP OpenSSL-tillägg krävs för att kunna sätta upp en säker anslutning till Live Update-servern. Aktivera i din php.ini.', 116 | 'The ionCube Loader is not enabled or at least at version 4.0.9.' => 'ionCube Loader är inte aktiverad eller inte i version 4.0.9 eller högre.', 117 | 'An old version of the ionCube Loader prior to version 4.0.9 is installed.' => 'En gammal version av ionCube Loader, före version 4.0.9, är installerad.', 118 | 'Before version 4.0.9, the ionCube Loader was incompatible with Phar archives. Either upgrade to the latest version or disable the module. More information is available here: %s' => 'Före version 4.0.9 var ionCube Loader inte kompatibel med Phar-arkiv. Antingen uppgraderas denna till senaste version eller så avaktiveras modulen. Mer information finns här: %s', 119 | 'Detect Unicode' => 'Detektera Unicode', 120 | 'The --enable-zend-multibyte flag is not set or detect_unicode is disabled.' => 'Flaggan --enable-zend-multibyte är inte satt eller så är detect_unicode avaktiverat.', 121 | 'The detect_unicode settings on your server are not correct.' => 'Inställningen detect_unicode på din server är inte korrekt.', 122 | 'If PHP is compiled with the --enable-zend-multibyte flag, you have to explicitly disable detect_unicode in your php.ini: detect_unicode = Off. This is a PHP bug which might be fixed in the future. More information is available here: %s' => 'Om PHP är kompilerad med flaggan --enable-zend-multibyte så måste du avaktivera detect_unicode i din php.ini: detect_unicode = Off. Detta är en bug i PHP som kan komma att bli korrigerad i framtiden. Mer information finns här: %s', 123 | 'You are not using FastCGI and eAccelerator.' => 'Du använder inte FastCGI och eAccelerator.', 124 | 'You are using FastCGI and eAccelerator.' => 'Du använder FastCGI och eAccelerator.', 125 | 'It seems that FastCGI in combination with the eAccelerator extension is buggy when it comes to Phar archives. You can either disable the eAccelerator extension or use a different PHP cache instead (e.g. FastCGI+APC).' => 'Det verkar som att FastCGI i kombination med eAccelerator-tillägget uppträder felaktigt när det gäller Phar-arkiv. Du kan antingen avaktivera eAccelerator-tillägget eller använda en annan PHP-cache (t.ex. FastCGI+APC).', 126 | 'Connection test' => 'Anslutningstest', 127 | 'A connection to update.contao.org could be established.' => 'En anslutning till update.contao.org kunde upprättas.', 128 | 'A connection to update.contao.org could not be established.' => 'En anslutning till update.contao.org kunde inte upprättas.', 129 | 'Maybe the request has been blocked by a firewall. Please contact your server administrator.' => 'Anslutningen kan ha blockerats av en brandvägg. Kontakta din serveradministratör.', 130 | 'You can use the Live Update on this server.' => 'Du kan använda Live Update på denna server.', 131 | 'You cannot use the Live Update on this server.' => 'Du kan inte använda Live Update på denna server.', 132 | 'Extension Repository' => 'Pluginkatalog', 133 | 'PHP SOAP extension' => 'PHP SOAP-tillägg', 134 | 'The PHP SOAP extension is available.' => 'PHP SOAP-tillägg är tillgängligt.', 135 | 'The PHP SOAP extension is not available.' => 'PHP SOAP-tillägg är inte tillgängligt.', 136 | 'The PHP SOAP extension is required to communicate with the Extension Repository server. You can enable it by compiling PHP with the --enable-soap flag. Depending on your Contao version, you might also be able to use the %s extension.' => 'PHP SOAP-tillägg krävs för att kommunicera med Pluginkatalog-servern. Du kan slå på det genom att kompilera PHP med flaggan --enable-soap. Beroende på din Contao-version så kan du även använda modulen %s.', 137 | 'A connection to contao.org could be established.' => 'En anslutning till contao.org kunde upprättas.', 138 | 'A connection to contao.org could not be established.' => 'En anslutning till contao.org kunde inte upprättas.', 139 | 'You can use the Extension Repository on this server.' => 'Du kan använda Pluginkatalogen på denna server.', 140 | 'You cannot use the Extension Repository on this server.' => 'Du kan inte använda Pluginkatalogen på denna server.', 141 | 'Validate an installation' => 'Validera en installation', 142 | 'Could not find a Contao installation.' => 'Kunde inte hitta någon Contao-installation.', 143 | 'To validate an existing installation, please upload the "check" folder to your installation directory.' => 'För att validera en existerande installation måste du ladda upp "check"-mappen till din installationsmapp.', 144 | 'Unknown version' => 'Okänd version', 145 | 'The installed version %s is not (yet) supported.' => 'Den installerade versionen %s stöds inte (ännu).', 146 | 'There is no version file for your Contao installation. Are you using a stable Contao version and do you have the latest version of the Contao Check?' => 'Det finns ingen versions-fil i din Contao-installation. Använder du en stabil Contao-version och har du den senaste versionen av Contao Check?', 147 | 'Version' => 'Version', 148 | 'Found a Contao %s installation.' => 'Hittade en Contao %s installation.', 149 | 'Missing files' => 'Saknade filer', 150 | 'Corrupt files' => 'Skadade filer', 151 | 'Missing optional files' => 'Saknade valfria filer.', 152 | 'Your installation is up to date.' => 'Din installation är aktuell.', 153 | 'Your installation is not up to date.' => 'Din installation är inte aktuell.', 154 | ); 155 | -------------------------------------------------------------------------------- /check/i18n/zh.php: -------------------------------------------------------------------------------- 1 | 'Composer包管理器', 14 | 'PHP %s or greater' => 'PHP %s 或更高', 15 | 'You have PHP version %s.' => '当前PHP版本%s.', 16 | 'Composer requires at least PHP version %s.' => 'Composer最低需要PHP版本 %s.', 17 | 'PHP Phar extension' => 'PHP Phar扩展', 18 | 'The PHP Phar extension is enabled.' => 'PHP Phar扩展已启用。', 19 | 'The PHP Phar extension is not enabled.' => 'PHP Phar扩展未启用。', 20 | 'The PHP Phar extension is part of the PHP core since PHP 5.3 and has to be explicitly disabled using the --disable-phar flag. Recompile PHP without the flag.' => 'PHP Phar扩展是自PHP 5.3以来PHP核心的一部分,必须使用--disable-phar标记显式禁用。 没有标记重新编译PHP。', 21 | 'PHP cURL extension' => 'PHP cURL扩展', 22 | 'The PHP cURL extension is available.' => 'PHP cURL扩展可用。', 23 | 'The PHP cURL extension is not available.' => 'PHP cURL扩展不可用。', 24 | 'The PHP cURL extension is required to communicate with the package server. You can enable it by compiling PHP with the --enable-curl flag.' => '需要PHP cURL扩展才能与包服务器通信。 您可以通过使用--enable-curl标记编译PHP来启用它。', 25 | 'PHP APC extension' => 'PHP APC扩展', 26 | 'The PHP APC extension is not installed.' => 'PHP APC扩展未安装。', 27 | 'The PHP APC extension is installed.' => 'PHP APC扩展已安装。', 28 | 'Using the PHP APC extension with Composer can lead to unexpected "cannot redeclare class" errors.' => '在Composer中使用PHP APC扩展可能会导致意外的“无法重新声明类”错误。', 29 | 'Suhosin extension' => 'Suhosin扩展', 30 | 'The Suhosin extension is not installed or correctly configured for .phar files.' => 'Suhosin扩展未安装或正确配置.phar文件。', 31 | 'The Suhosin extension does not allow to run .phar files.' => 'Suhosin扩展不允许运行.phar文件。', 32 | 'You have to add "phar" to the list of allowed streams in your php.ini: suhosin.executor.include.whitelist = phar' => '您必须将“phar”添加到php.ini中允许的流列表中: suhosin.executor.include.whitelist = phar', 33 | 'allow_url_fopen' => 'allow_url_fopen', 34 | 'The PHP flag "allow_url_fopen" is set.' => 'PHP选项“allow_url_fopen”已设置。', 35 | 'The PHP flag "allow_url_fopen" is not set.' => 'PHP选项“allow_url_fopen”未设置。', 36 | 'To download the installation files, Composer requires the "allow_url_fopen" flag to be set in the php.ini.' => '要下载安装文件,Composer需要在php.ini中设置“allow_url_fopen”标记。', 37 | 'File permissions' => 'File权限', 38 | 'The "posix_getpwuid" function is not available.' => '"posix_getpwuid"功能未启用。', 39 | 'File permissions cannot be tested, because the posix_getpwuid function has been disabled. Please contact your server administrator.' => '无法测试文件权限,因为已禁用posix_getpwuid函数。 请联系您的服务器管理员。', 40 | 'The PHP process is allowed to create files.' => 'PHP进程被允许创建文件。', 41 | 'The PHP process is not allowed to create files.' => 'PHP进程未被允许创建文件。', 42 | 'The PHP process is not allowed to create or manipulate files. Please adjust your server configuration accordingly.' => '不允许PHP进程创建或操作文件。 请相应调整您的服务器配置。', 43 | 'shell_exec (optional)' => 'shell_exec (可选)', 44 | 'The PHP function "shell_exec" is available.' => 'PHP功能 "shell_exec" 可用。', 45 | 'The PHP function "shell_exec" is not available.' => 'PHP功能 "shell_exec" 不可用。', 46 | 'The "shell_exec" function is optionally required to run the Composer process in the background.' => '后台运行Composer,可以选择使用"shell_exec" 函数。', 47 | 'proc_open (optional)' => 'proc_open (可选)', 48 | 'The PHP function "proc_open" is available.' => 'PHP功能 "proc_open" 可用。', 49 | 'The PHP function "proc_open" is not available.' => 'PHP功能 "proc_open" 不可用。', 50 | 'The "proc_open" function is optionally required to run the package manager in dev mode.' => 'dev模式下运行包管理器可以选择 "proc_open" 功能。', 51 | 'You can use the Composer package manager on this server.' => '该服务器可以使用Composer包管理器。', 52 | 'You cannot use the Composer package manager on this server.' => '该服务器不可以使用Composer包管理器。', 53 | 'Go back' => '返回', 54 | 'php.ini settings' => 'php.ini设置', 55 | 'The PHP safe_mode is not enabled.' => 'PHP safe_mode未启用。', 56 | 'The PHP safe_mode is enabled.' => 'PHP safe_mode已启用。', 57 | 'It is recommended to disable the safe_mode in your php.ini or server control panel, otherwise the PHP process it not allowed to create or manipulate files and Contao cannot work properly.' => '建议在php.ini或服务器控制面板中禁用safe_mode,否则不允许PHP进程创建或操作文件,而且Contao无法正常工作。', 58 | 'Creating a test folder' => '正在创建一个测试文件夹', 59 | 'The test folder could be created (owner: %s, chmod: %s).' => '测试文件夹已被创建 (owner: %s, chmod: %s).', 60 | 'The test folder could not be created.' => '测试文件夹未被创建。', 61 | 'It seems that the PHP process does not have enough permissions to create folders on your server.' => '看起来该服务器中PHP进程没有足够的权限来创建文件夹。', 62 | 'The test folder does not have the correct owner or chmod settings.' => '测试文件夹没有正确的owner或chmod设置。', 63 | 'The test folder is owned by %s (should be %s) and has the chmod settings %s (should be %s).' => '当前测试文件夹拥有者是 %s (应是 %s) ,当前的chmod设置是 %s (应是 %s).', 64 | '775, 755, 770, 750 or 705' => '775, 755, 770, 750 或 705', 65 | 'Creating a test file' => '正在创建一个测试文件', 66 | 'The test file could be created (owner: %s, chmod: %s).' => '测试文件已被创建 (owner: %s, chmod: %s).', 67 | 'The test file could not be created.' => '测试文件未被创建。', 68 | 'It seems that the PHP process does not have enough permissions to create files on your server.' => '似乎该服务器中PHP进程没有足够的权限来创建文件。', 69 | 'The test file does not have the correct owner or chmod settings.' => '测试文件没有正确的owner或chmod设置。', 70 | 'The test file is owned by %s (should be %s) and has the chmod settings %s (should be %s).' => '当前测试文件拥有者是 %s (应是 %s) ,当前的chmod设置是 %s (应是 %s)。', 71 | '664, 644, 660, 640 or 604' => '664, 644, 660, 640 或 604', 72 | 'The PHP process is allowed to create files on this server.' => '该服务器允许PHP进程创建文件。', 73 | 'The PHP process is not allowed to create files on this server.' => '该服务器不允许PHP进程创建文件。', 74 | 'Overview' => '预览', 75 | 'You can install Contao 2.x' => '可以安装Contao 2.x', 76 | 'You cannot install Contao 2.x' => '不可以安装Contao 2.x', 77 | 'You can install Contao 3.x' => '可以安装Contao 3.x', 78 | 'You cannot install Contao 3.x' => '不可以安装Contao 3.x', 79 | 'You can install Contao 4.x' => '可以安装Contao 4.x', 80 | 'You cannot install Contao 4.x' => '不可以安装Contao 4.x', 81 | 'You can install Contao 4.5' => '可以安装Contao 4.5', 82 | 'You cannot install Contao 4.5' => '不可以安装Contao 4.5', 83 | 'The file permissions cannot be checked.' => '无法检查文件权限。', 84 | 'More information …' => '更多信息 …', 85 | 'Additional services' => '额外服务', 86 | 'You can use the Live Update.' => '可以使用在线更新。', 87 | 'You cannot use the Live Update.' => '不可以使用在线升级。', 88 | 'The Composer package manager requirements cannot be checked.' => 'Composer包管理器需求无法被检查。', 89 | 'You can use the Composer package manager.' => '可以使用Composer包管理器。', 90 | 'You cannot use the Composer package manager.' => '不可以使用Composer包管理器。', 91 | 'You can use the Extension Repository.' => '可以使用扩展仓库。', 92 | 'You cannot use the Extension Repository.' => '不可以使用扩展仓库。', 93 | 'Install Contao' => '安装Contao', 94 | 'Validate an existing installation' => '验证现有安装', 95 | 'Installation' => '安装', 96 | 'Web installer' => 'Web安装器', 97 | 'There is a Contao installation already. Are you looking for the %s?' => '已经有一个Contao安装。 您是在寻找 %s?', 98 | 'The automatic installation is not possible on your server due to safe_mode or file permission restrictions.' => '由于safe_mode或文件权限限制,您的服务器上无法自动安装。', 99 | 'The automatic installation is possible on your server.' => '您的服务器上可以自动安装。', 100 | 'The automatic installation is not possible on your server.' => '您的服务器上无法自动安装。', 101 | 'Your PHP installation either cannot connect to download.contao.org or is missing the PHP extension cURL or Zip.' => '您的PHP安装无法连接到download.contao.org或缺少PHP扩展cURL或Zip。', 102 | 'Manual installation' => '手动安装', 103 | 'Go to %s and download the latest Contao version.' => '前往 %s 下载Contao最新版。', 104 | 'Extract the download archive and upload the files to your server using an (S)FTP client.' => '使用(S)FTP客户端将解压的下载文件上传到服务器。', 105 | 'Open the Contao install tool by adding "/contao/install.php" to the URL of your installation.' => '通过将“/contao/install.php”添加到安装的URL来打开Contao安装工具。', 106 | 'Target version' => '目标版本', 107 | 'Start the installation' => '开始安装', 108 | 'Installation failed' => '安装失败', 109 | 'Installation complete' => '安装完成', 110 | 'Contao %s has been installed in %s.' => 'Contao %s 已被安装在 %s.', 111 | 'Open the Contao install tool' => '打开Contao安装工具', 112 | 'Live Update' => '在线更新', 113 | 'Phar has been added to the PHP core in version 5.3, so you require at least PHP version %s to use .phar files. If you have PHP 5.2, you might be able to use .phar files by installing the PECL phar extension (see %s).' => 'Phar已经在5.3版本的PHP核心中添加,因此至少需要PHP版本 %s 才能使用.phar文件。 如果你有PHP 5.2,你可以通过安装PECL phar扩展 (查看 %s)来使用.phar文件。', 114 | 'PHP OpenSSL extension' => 'PHP OpenSSL扩展', 115 | 'The PHP OpenSSL extension is enabled.' => 'PHP OpenSSL扩展已启用。', 116 | 'The PHP OpenSSL extension is not enabled.' => 'PHP OpenSSL扩展未启用。', 117 | 'The PHP OpenSSL extension is required to set up a secure connection to the Live Update server. Enable it in your php.ini.' => 'PHP OpenSSL扩展被使用在与在线更新服务器创建一个安全连接。请在php.ini中启用。', 118 | 'The ionCube Loader is not enabled or at least at version 4.0.9.' => 'ionCube Loader未启用或至少版本是4.0.9。', 119 | 'An old version of the ionCube Loader prior to version 4.0.9 is installed.' => '已安装ionCube Loader 4.0.9版本之前的旧版。', 120 | 'Before version 4.0.9, the ionCube Loader was incompatible with Phar archives. Either upgrade to the latest version or disable the module. More information is available here: %s' => '在版本4.0.9之前,ionCube Loader与Phar存档不兼容。 升级到最新版本或禁用模块。 更多信息请点击这里: %s', 121 | 'Detect Unicode' => '检测Unicode', 122 | 'The --enable-zend-multibyte flag is not set or detect_unicode is disabled.' => '未设置--enable-zend-multibyte标记或已禁用detect_unicode。', 123 | 'The detect_unicode settings on your server are not correct.' => '服务器中detect_unicode设置不正确。', 124 | 'If PHP is compiled with the --enable-zend-multibyte flag, you have to explicitly disable detect_unicode in your php.ini: detect_unicode = Off. This is a PHP bug which might be fixed in the future. More information is available here: %s' => '如果使用--enable-zend-multibyte标记编译PHP,则必须在php.ini中显式禁用detect_unicode:detect_unicode = Off。 这是一个可能在将来修复的PHP错误。 更多信息请点击这里: %s', 125 | 'You are not using FastCGI and eAccelerator.' => '没有使用FastCGI和eAccelerator。', 126 | 'You are using FastCGI and eAccelerator.' => '正在使用FastCGI和eAccelerator。', 127 | 'It seems that FastCGI in combination with the eAccelerator extension is buggy when it comes to Phar archives. You can either disable the eAccelerator extension or use a different PHP cache instead (e.g. FastCGI+APC).' => '在涉及Phar归档时,似乎FastCGI与eAccelerator扩展相结合是有缺陷的。 您可以禁用eAccelerator扩展,也可以使用其他PHP缓存(例如FastCGI + APC)。', 128 | 'Connection test' => '连接测试', 129 | 'A connection to update.contao.org could be established.' => '可以建立与update.contao.org的连接。', 130 | 'A connection to update.contao.org could not be established.' => '无法建立与update.contao.org的连接。', 131 | 'Maybe the request has been blocked by a firewall or your OpenSSL version is too old. Please contact your server administrator.' => '也许防火墙阻止了请求或OpenSSL版本太久。请联系您的服务器管理员。', 132 | 'You can use the Live Update on this server.' => '可以在当前服务器上使用在线升级。', 133 | 'You cannot use the Live Update on this server.' => '无法在当前服务器上使用在线升级。', 134 | 'Extension Repository' => '扩展仓库', 135 | 'PHP SOAP extension' => 'PHP SOAP扩展', 136 | 'The PHP SOAP extension is available.' => 'The PHP SOAP扩展可用。', 137 | 'The PHP SOAP extension is not available.' => 'The PHP SOAP扩展不可用。', 138 | 'The PHP SOAP extension is required to communicate with the Extension Repository server. You can enable it by compiling PHP with the --enable-soap flag. Depending on your Contao version, you might also be able to use the %s extension.' => 'PHP SOAP 扩展需要和扩展仓库服务器通信。您可以通过使用--enable-soap标记编译PHP来启用它。取决于您的Contao版本,也许需要使用 %s 扩展。', 139 | 'A connection to contao.org could be established.' => '可以建立与contao.org的连接。', 140 | 'A connection to contao.org could not be established.' => '无法建立与contao.org的连接。', 141 | 'You can use the Extension Repository on this server.' => '可以在当前服务器上使用扩展仓库。', 142 | 'You cannot use the Extension Repository on this server.' => '无法在当前服务器上使用扩展仓库。', 143 | 'Validate an installation' => '验证安装', 144 | 'Could not find a Contao installation.' => '未发现Contao安装。', 145 | 'To validate an existing installation, please upload the "check" folder to your installation directory.' => '要验证现有安装,请将“check”文件夹上传到安装目录。', 146 | 'Unknown version' => '未知版本', 147 | 'The installed version %s is not (yet) supported.' => ' 不 (尚未)支持已安装的版本 %s 。', 148 | 'There is no version file for your Contao installation. Are you using a stable Contao version and do you have the latest version of the Contao Check?' => '您的Contao安装没有版本文件。 您使用的是稳定的Contao版本吗?您是否拥有最新版本的Contao Check?', 149 | 'Version' => '版本', 150 | 'Found a Contao %s installation.' => '已发现Contao %s 安装.', 151 | 'Missing files' => '确实文件', 152 | 'Corrupt files' => '损坏的文件', 153 | 'Missing optional files' => '缺少可选文件', 154 | 'Your installation is up to date.' => '您的安装是最新的。', 155 | 'Your installation is not up to date.' => '您的安装不是最新的。', 156 | 'Contao 2.x' => 'Contao 2.x', 157 | 'You need at least PHP %s.' => '至少需要PHP %s.', 158 | 'PHP 7.x' => 'PHP 7.x', 159 | 'The PHP version is lower than 7.0.0.' => 'PHP版本低于 7.0.0。', 160 | 'Contao 2.x is incompatible with PHP 7.' => 'Contao 2.x 不兼容 PHP 7.', 161 | 'PHP GDlib extension' => 'PHP GDlib 扩展', 162 | 'The PHP GDlib extension is enabled.' => 'PHP GDlib 扩展已启用。', 163 | 'The PHP GDlib extension is not enabled.' => 'PHP GDlib 扩展未启用。', 164 | 'The PHP GDlib extension is not part of the PHP core and has to be explicitly enabled using the --with-gd flag. Recompile PHP with the flag.' => 'PHP GDlib扩展不是PHP核心的一部分,必须使用--with-gd标记显式启用。 使用标记重新编译PHP。', 165 | 'PHP DOM extension' => 'PHP DOM 扩展', 166 | 'The PHP DOM extension is enabled.' => 'The PHP DOM 扩展已启用。', 167 | 'The PHP DOM extension is not enabled.' => 'The PHP DOM 扩展未启用。', 168 | 'The PHP DOM extension is part of the PHP core and has to be explicitly disabled using the --disable-dom flag. Recompile PHP without the flag.' => 'PHP DOM扩展是PHP核心的一部分,必须使用--disable-dom标记显式禁用。 没有标记重新编译PHP。', 169 | 'You can install Contao 2.x on this server.' => '可以在当前服务器中安装Contao 2.x。', 170 | 'You cannot install Contao 2.x on this server.' => '无法在当前服务器中安装Contao 2.x。', 171 | 'Contao 3.x' => 'Contao 3.x', 172 | 'As of Contao 3.4 you need at least PHP %s.' => 'Contao 3.4 至少需要 PHP %s.', 173 | 'You can install Contao 3.x on this server.' => '可以在当前服务器中安装Contao 3.x', 174 | 'You cannot install Contao 3.x on this server.' => '无法在当前服务器中安装Contao 3.x', 175 | 'Contao 4.x' => 'Contao 4.x', 176 | 'Contao 4.5' => 'Contao 4.5', 177 | 'As of Contao 4.5 you need at least PHP %s.' => 'Contao 4.5 至少需要 PHP %s.', 178 | 'PHP intl extension' => 'PHP intl 扩展', 179 | 'The PHP intl extension is enabled.' => 'PHP intl 扩展已启用。', 180 | 'The PHP intl extension is not enabled.' => 'PHP intl 扩展未启用。', 181 | 'The PHP intl extension is bundled with the PHP core since PHP 5.3 and has to be explicitly enabled using the --enable-intl flag. Recompile PHP with the flag.' => '自PHP 5.3以来,PHP intl扩展与PHP核心捆绑在一起,必须使用--enable-intl标记显式启用。 使用标记重新编译PHP。', 182 | 'The PHP GDlib extension is not enabled.' => 'PHP GDlib 扩展未启用。', 183 | 'The PHP GDlib extension is not part of the PHP core and has to be explicitly enabled using the --with-gd flag. Recompile PHP with the flag.' => 'PHP GDlib扩展不是PHP核心的一部分,必须使用--with-gd标记显式启用。 使用标记重新编译PHP。', 184 | 'You can install Contao 4.x on this server.' => '可以在当前服务器中安装Contao 4.x', 185 | 'You cannot install Contao 4.x on this server.' => '无法在当前服务器中安装Contao 4.x', 186 | 'You can install Contao 4.5 on this server.' => '可以在当前服务器中安装Contao 4.5', 187 | 'You cannot install Contao 4.5 on this server.' => '无法在当前服务器中安装Contao 4.5', 188 | 'PHP image processing' => 'PHP 图片处理', 189 | 'At least one of the supported image processing libraries is available.' => '至少启用一个支持的图片处理库。', 190 | 'None of the supported image processing libraries are available.' => '没有可用的受支持的图片处理库。', 191 | 'As of Contao 4.3 one of the supported image processing libraries must be available (GD, Imagick or Gmagick).' => '从Contao 4.3开始,必须提供一个支持的图像处理库(GD,Imagick或Gmagick)。', 192 | 'An unknown error occurred while getting the newest LTS version.' => '获取最新LTS版本时发生一个未知错误。', 193 | 'Version file error' => '版本文件错误', 194 | 'Error while retrieving version file: %s.' => '检索版本文件: %s时出错。', 195 | 'There was an error retrieving the version file from contao.org for your Contao version. You can download the file manually from %s and put it into the "versions" directory of the Contao Check.' => '对于当前的Contao版本从 contao.org 检索版本文件时发生一个错误。您可以手动下载文件%s 并把此文件放到Contao检测工具的"versions" 目录。 ', 196 | 'System temp directory' => '系统临时文件目录', 197 | 'The system temp directory is writable.' => '系统临时文件目录可写。', 198 | 'The system temp directory is not writable.' => '系统临时文件目录不可写。', 199 | 'Make sure the correct directory is configured via the TMP, TMPDIR or TEMP environment variable or the sys_temp_dir PHP variable.' => '确保通过TMP,TMPDIR或TEMP环境变量或sys_temp_dir PHP变量配置了正确的目录。', 200 | 'Symlinks' => 'Symlinks', 201 | 'Symlinks can successfully be created.' => '可成功创建Symlinks。', 202 | 'Symlinks could not be created.' => '无法创建Symlinks。', 203 | 'Working symlinks are required to run Contao 4. Please contact your server administrator.' => '运行Contao 4需要运行symlinks。 请联系服务器管理员。', 204 | 'The PHP symlink() function is disabled.' => 'PHP symlink() 函数已禁用。', 205 | 'The PHP symlink() function is required to run Contao 4. Please contact your server administrator.' => '运行 Contao 4 需要PHP symlink() 函数。请联系服务器管理员。', 206 | 'PHP XCache extension' => 'PHP XCache扩展', 207 | 'The PHP XCache extension is not enabled.' => 'PHP XCache扩展未启用。', 208 | 'The PHP XCache extension is enabled.' => 'PHP XCache扩展已启用。', 209 | 'The PHP XCache extension prevents the execution of .phar files. Disable this extension in your php.ini.' => 'PHP XCache 扩展阻止执行.phar文件。在php.ini中禁用该扩展。', 210 | 'The ICU library version is %s.' => 'ICU库版本 %s.', 211 | 'The ICU library version on your system needs to be at least %s. Please contact your server administrator.' => '系统中ICU库版本至少需要 %s。请联系服务器管理员。', 212 | 'ICU library' => 'ICU 库', 213 | 'Contao system requirements' => 'Contao系统需求', 214 | 'The PHP xmlreader extension is enabled.' => 'PHP xmlreader扩展已启用。', 215 | 'The PHP xmlreader extension is not enabled.' => 'PHP xmlreader扩展未启用。', 216 | 'The PHP xmlreader extension is bundled with the PHP core since PHP 5.1 and has to be explicitly disabled using the --disable-xmlreader flag. Recompile PHP without the flag.' => '自PHP 5.1以来,PHP xmlreader扩展与PHP内核捆绑在一起,必须使用--disable-xmlreader标记显式禁用。 没有标记重新编译PHP。', 217 | 'File locks' => '文件锁', 218 | 'A file lock could be established.' => '可以建立文件锁。', 219 | 'A file lock could not be established.' => '不能建立文件锁。', 220 | 'PHP was unable to get a file lock on an existing file. Please contact your server administrator.' => 'PHP无法在现有文件上获取文件锁定。 请联系您的服务器管理员。', 221 | 'The installer requires the "allow_url_fopen" flag to be set in the php.ini.' => '安装程序需要在php.ini中设置"allow_url_fopen"标记。', 222 | 'Contao %s cannot be validated with the Contao Check.' => 'Contao %s cannot be validated with the Contao Check.', 223 | ); 224 | -------------------------------------------------------------------------------- /check/includes/.htaccess: -------------------------------------------------------------------------------- 1 | order deny,allow 2 | deny from all -------------------------------------------------------------------------------- /check/includes/bootstrap.php: -------------------------------------------------------------------------------- 1 | 19 | */ 20 | class Bootstrap 21 | { 22 | /** 23 | * Start the session and set the locale 24 | */ 25 | public function initialize() 26 | { 27 | error_reporting(E_ALL ^ E_NOTICE); 28 | 29 | session_start(); 30 | 31 | define('CONTAO_CHECK_VERSION', '12.2'); 32 | 33 | Translator::load($this->getLanguage()); 34 | } 35 | 36 | /** 37 | * Determine the user language and return the locale 38 | * 39 | * @return string The locale 40 | */ 41 | public function getLanguage() 42 | { 43 | $locale = ''; 44 | 45 | if (isset($_GET['lng'])) { 46 | if ($this->isLocale($_GET['lng'])) { 47 | $locale = $_GET['lng']; 48 | $_SESSION['C_LANGUAGE'] = $_GET['lng']; 49 | } 50 | } elseif (isset($_SESSION['C_LANGUAGE'])) { 51 | $locale = $_SESSION['C_LANGUAGE']; 52 | } else { 53 | $locales = scandir(__DIR__ . '/../i18n'); 54 | $accepted = $this->getAcceptedLanguages(); 55 | $limit = min(count($accepted), 8); 56 | 57 | // Check the first eight entries 58 | for ($i=0; $i<$limit; $i++) { 59 | $tag = $accepted[$i]; 60 | 61 | // Find the locale or ISO language code 62 | if (in_array("$tag.php", $locales)) { 63 | $locale = $tag; 64 | } else { 65 | $matches = array_values(preg_grep("/^$tag/", $locales)); 66 | 67 | if (!empty($matches)) { 68 | $locale = basename($matches[0], '.php'); 69 | } 70 | } 71 | 72 | // Store the locale in the session 73 | if ($locale != '') { 74 | $_SESSION['C_LANGUAGE'] = $locale; 75 | break; 76 | } 77 | } 78 | } 79 | 80 | // Fall back to English 81 | if ($locale == '') { 82 | $locale = 'en_US'; 83 | $_SESSION['C_LANGUAGE'] = $locale; 84 | } 85 | 86 | return $locale; 87 | } 88 | 89 | /** 90 | * Validate a locale 91 | * 92 | * @param string $locale The locale string (e.g. "en" or "en_US") 93 | * 94 | * @return boolean True if the locale is valid 95 | */ 96 | protected function isLocale($locale) 97 | { 98 | return preg_match('/^[a-z]{2}(_[A-Z]{2})?$/', $locale); 99 | } 100 | 101 | /** 102 | * Return the first eight accepted languages as an array 103 | * 104 | * @return array The locale array 105 | * 106 | * @author Leo Unglaub 107 | */ 108 | protected function getAcceptedLanguages() 109 | { 110 | $return = array(); 111 | $accepted = array(); 112 | 113 | // The implementation differs from the original implementation and also works with .jp browsers 114 | preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $accepted); 115 | 116 | // Remove all invalid locales 117 | foreach ($accepted[1] as $v) { 118 | $chunks = explode('-', $v); 119 | 120 | // Language plus dialect, e.g. en_US, fr_FR 121 | if (isset($chunks[1]) && $this->isLocale(($locale = $chunks[0] . '_' . strtoupper($chunks[1])))) { 122 | $return[] = $locale; 123 | } 124 | 125 | // Language only, e.g. en, fr (see #29) 126 | if ($this->isLocale(($locale = $chunks[0]))) { 127 | $return[] = $locale; 128 | } 129 | } 130 | 131 | return array_slice(array_unique($return), 0, 8); 132 | } 133 | } 134 | 135 | $bootstrap = new Bootstrap; 136 | $bootstrap->initialize(); 137 | -------------------------------------------------------------------------------- /check/includes/translator.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Translator 18 | { 19 | /** 20 | * @var array 21 | */ 22 | private static $labels = array(); 23 | 24 | /** 25 | * Load a translation 26 | * 27 | * @param string $locale The locale 28 | */ 29 | public static function load($locale) 30 | { 31 | $path = __DIR__ . '/../i18n/' . $locale . '.php'; 32 | 33 | // Fall back to English 34 | if (!file_exists($path)) { 35 | $path = __DIR__ . '/../i18n/en.php'; 36 | } 37 | 38 | self::$labels = include $path; 39 | } 40 | 41 | /** 42 | * Translate a string 43 | * 44 | * @param string $str The input string 45 | * 46 | * @return string The translated string 47 | */ 48 | public static function translate($str) 49 | { 50 | if (isset(self::$labels[$str])) { 51 | return self::$labels[$str]; 52 | } 53 | 54 | return $str; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /check/includes/util.php: -------------------------------------------------------------------------------- 1 | $int); 16 | } 17 | } 18 | 19 | /** 20 | * Translate a string 21 | * 22 | * @param string $str 23 | * 24 | * @return string The translated string 25 | */ 26 | function __($str) 27 | { 28 | return Translator::translate($str); 29 | } 30 | 31 | /** 32 | * Check if a function is disabled 33 | * 34 | * @param string $func 35 | * 36 | * @return boolean True if the function is disabled 37 | */ 38 | function function_disabled($func) 39 | { 40 | return in_array($func, array_map('trim', explode(',', ini_get('disable_functions')))); 41 | } 42 | 43 | /** 44 | * Retrieve information using cURL 45 | * 46 | * @param string $url The URL 47 | * 48 | * @return string The output string 49 | * 50 | * @throws RuntimeException If the download fails 51 | */ 52 | function curl($url) 53 | { 54 | if (!function_exists('curl_init')) { 55 | throw new RuntimeException('The installation package could not be downloaded: cURL is not available'); 56 | } 57 | 58 | $ch = curl_init(); 59 | 60 | curl_setopt($ch, CURLOPT_HEADER, false); 61 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 62 | curl_setopt($ch, CURLOPT_URL, $url); 63 | curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 64 | curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0'); 65 | 66 | if (($met = ini_get('max_execution_time')) > 0) { 67 | curl_setopt($ch, CURLOPT_TIMEOUT, round($met * 0.9)); 68 | } 69 | 70 | // cURL will follow redirects if open_basedir is not set 71 | if (false && ini_get('open_basedir') == '') { 72 | curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 73 | curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 74 | $return = curl_exec($ch); 75 | 76 | if (curl_errno($ch)) { 77 | $error = curl_error($ch); 78 | curl_close($ch); 79 | 80 | throw new RuntimeException($error); 81 | } 82 | 83 | $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 84 | curl_close($ch); 85 | 86 | if ($code != 200) { 87 | throw new RuntimeException('The installation package could not be downloaded'); 88 | } 89 | 90 | return $return; 91 | } 92 | 93 | curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 94 | 95 | $new = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 96 | $rch = curl_copy_handle($ch); 97 | 98 | curl_setopt($rch, CURLOPT_HEADER, true); 99 | curl_setopt($rch, CURLOPT_NOBODY, true); 100 | curl_setopt($rch, CURLOPT_FORBID_REUSE, false); 101 | curl_setopt($rch, CURLOPT_RETURNTRANSFER, true); 102 | 103 | $max = 10; 104 | 105 | do { 106 | curl_setopt($rch, CURLOPT_URL, $new); 107 | $header = curl_exec($rch); 108 | 109 | if (curl_errno($rch)) { 110 | $error = curl_error($rch); 111 | curl_close($rch); 112 | 113 | throw new RuntimeException($error); 114 | } 115 | 116 | $code = curl_getinfo($rch, CURLINFO_HTTP_CODE); 117 | 118 | if ($code == 301 || $code == 302) { 119 | $matches = array(); 120 | preg_match('/Location:(.*?)\n/', $header, $matches); 121 | $new = trim(array_pop($matches)); 122 | } else { 123 | $code = 0; 124 | } 125 | } while ($code && --$max); 126 | 127 | curl_close($rch); 128 | 129 | if ($max > 0) { 130 | curl_setopt($ch, CURLOPT_URL, $new); 131 | $return = curl_exec($ch); 132 | 133 | if (curl_errno($ch)) { 134 | $error = curl_error($ch); 135 | curl_close($ch); 136 | 137 | throw new RuntimeException($error); 138 | } 139 | } else { 140 | curl_close($ch); 141 | 142 | throw new RuntimeException('Too many redirects'); 143 | } 144 | 145 | $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 146 | curl_close($ch); 147 | 148 | if ($code != 200) { 149 | throw new RuntimeException('The installation package could not be downloaded'); 150 | } 151 | 152 | return $return; 153 | } 154 | -------------------------------------------------------------------------------- /check/index.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class Router 20 | { 21 | /** 22 | * Dispatch a request and send the response 23 | * 24 | * @throws RuntimeException If the command name is invalid 25 | */ 26 | public static function dispatch() 27 | { 28 | // Default command 29 | $file = 'controller/index.php'; 30 | $class = 'Index'; 31 | 32 | $command = filter_var($_GET['c'], FILTER_SANITIZE_STRING); 33 | 34 | // Check the command (thanks to Arnaud Buchoux) 35 | if (static::isInsecurePath($command)) { 36 | throw new RuntimeException("Invalid command $command"); 37 | } 38 | 39 | // Custom command 40 | if ($command != '' && file_exists("controller/$command.php")) { 41 | $file = "controller/$command.php"; 42 | $class = str_replace(' ', '', ucwords(str_replace('-', ' ', $command))); 43 | } 44 | 45 | include $file; 46 | 47 | // Send the correct content type (see #106) 48 | header('Content-Type: text/html; charset=utf-8'); 49 | 50 | $controller = new $class(); 51 | $controller->run(); 52 | } 53 | 54 | /** 55 | * Insecure path potentially containing directory traversal 56 | * 57 | * @param string $path The file path 58 | * 59 | * @return boolean True if the file path is insecure 60 | */ 61 | public static function isInsecurePath($path) 62 | { 63 | // Normalize backslashes 64 | $path = str_replace('\\', '/', $path); 65 | $path = preg_replace('#//+#', '/', $path); 66 | 67 | // Equals .. 68 | if ($path == '..') 69 | { 70 | return true; 71 | } 72 | 73 | // Begins with ./ 74 | if (substr($path, 0, 2) == './') 75 | { 76 | return true; 77 | } 78 | 79 | // Begins with ../ 80 | if (substr($path, 0, 3) == '../') 81 | { 82 | return true; 83 | } 84 | 85 | // Ends with /. 86 | if (substr($path, -2) == '/.') 87 | { 88 | return true; 89 | } 90 | 91 | // Ends with /.. 92 | if (substr($path, -3) == '/..') 93 | { 94 | return true; 95 | } 96 | 97 | // Contains /../ 98 | if (strpos($path, '/../') !== false) 99 | { 100 | return true; 101 | } 102 | 103 | return false; 104 | } 105 | } 106 | 107 | Router::dispatch(); 108 | -------------------------------------------------------------------------------- /check/versions/.htaccess: -------------------------------------------------------------------------------- 1 | order deny,allow 2 | deny from all -------------------------------------------------------------------------------- /check/views/.htaccess: -------------------------------------------------------------------------------- 1 | order deny,allow 2 | deny from all -------------------------------------------------------------------------------- /check/views/composer.phtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contao Check <?php echo CONTAO_CHECK_VERSION ?> 6 | 7 | 8 | 9 | 10 |
11 |

Contao Check

12 |
13 |

14 |
15 |
16 |

17 | hasPhp()): ?> 18 |

19 | 20 |

21 |

22 | 23 |
24 |
25 |

26 | hasPhar()): ?> 27 |

28 | 29 |

30 |

31 | 32 |
33 |
34 |

35 | hasXCache()): ?> 36 |

37 | 38 |

39 |

40 | 41 |
42 |
43 |

44 | hasCurl()): ?> 45 |

46 | 47 |

48 |

49 | 50 |
51 |
52 |

53 | hasApc()): ?> 54 |

55 | 56 |

57 |

58 | 59 |
60 |
61 |

62 | hasSuhosin()): ?> 63 |

64 | 65 |

66 |

suhosin.executor.include.whitelist = phar') ?>

67 | 68 |
69 |
70 |

71 | hasAllowUrlFopen()): ?> 72 |

73 | 74 |

75 |

76 | 77 |
78 |
79 |

80 | 81 |

82 |

posix_getpwuid function has been disabled. Please contact your server administrator.') ?>

83 | 84 | canCreateFiles()): ?> 85 |

86 | 87 |

88 |

89 | 90 | 91 |
92 |
93 |

94 | hasShellExec()): ?> 95 |

96 | 97 |

98 |

99 | 100 |
101 |
102 |

103 | hasProcOpen()): ?> 104 |

105 | 106 |

107 |

108 | 109 |
110 | 111 |
112 | isAvailable()): ?> 113 |

114 | 115 |

116 | 117 |
118 | 119 |

120 |
121 | 122 | -------------------------------------------------------------------------------- /check/views/contao2.phtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contao Check <?php echo CONTAO_CHECK_VERSION ?> 6 | 7 | 8 | 9 | 10 |
11 |

Contao Check

12 |
13 |

14 |
15 |
16 |

17 | hasPhp()): ?> 18 |

19 | 20 |

21 |

22 | 23 |
24 |
25 |

26 | hasNotPhp7()): ?> 27 |

28 | 29 |

30 |

31 | 32 |
33 |
34 |

35 | hasGd()): ?> 36 |

37 | 38 |

39 |

40 | 41 |
42 |
43 |

44 | hasDom()): ?> 45 |

46 | 47 |

48 |

49 | 50 |
51 |
52 |

53 | hasXmlReader()): ?> 54 |

55 | 56 |

57 |

58 | 59 |
60 |
61 | isCompatible()): ?> 62 |

63 | 64 |

65 | 66 |
67 |

68 |
69 | 70 | -------------------------------------------------------------------------------- /check/views/contao3.phtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contao Check <?php echo CONTAO_CHECK_VERSION ?> 6 | 7 | 8 | 9 | 10 |
11 |

Contao Check

12 |
13 |

14 |
15 |
16 |

17 | hasPhp()): ?> 18 |

19 | 20 |

21 |

22 | 23 |
24 |
25 |

26 | hasGd()): ?> 27 |

28 | 29 |

30 |

31 | 32 |
33 |
34 |

35 | hasDom()): ?> 36 |

37 | 38 |

39 |

40 | 41 |
42 |
43 |

44 | hasXmlReader()): ?> 45 |

46 | 47 |

48 |

49 | 50 |
51 |
52 | isCompatible()): ?> 53 |

54 | 55 |

56 | 57 |
58 |

59 |
60 | 61 | -------------------------------------------------------------------------------- /check/views/contao4.phtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contao Check <?php echo CONTAO_CHECK_VERSION ?> 6 | 7 | 8 | 9 | 10 |
11 |

Contao Check

12 |
13 |

14 |
15 |
16 |

17 | hasPhp()): ?> 18 |

19 | 20 |

21 |

22 | 23 |
24 |
25 |

26 | hasGraphicsLib()): ?> 27 |

28 | 29 |

30 |

31 | 32 |
33 |
34 |

35 | hasDom()): ?> 36 |

37 | 38 |

39 |

40 | 41 |
42 |
43 |

44 | hasIntl()): ?> 45 |

46 | 47 |

48 |

49 | 50 |
51 |
52 |

53 | hasXmlReader()): ?> 54 |

55 | 56 |

57 |

58 | 59 |
60 |
61 |

62 | canWriteTmpDir()): ?> 63 |

64 | 65 |

66 |

67 | 68 |
69 |
70 |

71 | canUseSymlink()): ?> 72 | canCreateSymlinks()): ?> 73 |

74 | 75 |

76 |

77 | 78 | 79 |

80 |

81 | 82 |
83 |
84 |

85 | canCreateFileLocks()): ?> 86 |

87 | 88 |

89 |

90 | 91 |
92 |
93 | isCompatible()): ?> 94 |

95 | 96 |

97 | 98 |
99 |

100 |
101 | 102 | -------------------------------------------------------------------------------- /check/views/contao45.phtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contao Check <?php echo CONTAO_CHECK_VERSION ?> 6 | 7 | 8 | 9 | 10 |
11 |

Contao Check

12 |
13 |

14 |
15 |
16 |

17 | hasPhp()): ?> 18 |

19 | 20 |

21 |

22 | 23 |
24 |
25 |

26 | hasGraphicsLib()): ?> 27 |

28 | 29 |

30 |

31 | 32 |
33 |
34 |

35 | hasDom()): ?> 36 |

37 | 38 |

39 |

40 | 41 |
42 |
43 |

44 | hasIntl()): ?> 45 |

46 | 47 |

48 |

49 | 50 |
51 | hasIntl()): ?> 52 |
53 |

54 | hasIcu()): ?> 55 |

getIcuVersion()) ?>

56 | 57 |

getIcuVersion()) ?>

58 |

59 | 60 |
61 | 62 |
63 |

64 | hasXmlReader()): ?> 65 |

66 | 67 |

68 |

69 | 70 |
71 |
72 |

73 | canWriteTmpDir()): ?> 74 |

75 | 76 |

77 |

78 | 79 |
80 |
81 |

82 | canUseSymlink()): ?> 83 | canCreateSymlinks()): ?> 84 |

85 | 86 |

87 |

88 | 89 | 90 |

91 |

92 | 93 |
94 |
95 |

96 | canCreateFileLocks()): ?> 97 |

98 | 99 |

100 |

101 | 102 |
103 |
104 | isCompatible()): ?> 105 |

106 | 107 |

108 | 109 |
110 |

111 |
112 | 113 | 114 | -------------------------------------------------------------------------------- /check/views/file-permissions.phtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contao Check <?php echo CONTAO_CHECK_VERSION ?> 6 | 7 | 8 | 9 | 10 |
11 |

Contao Check

12 |
13 |

14 |

15 |
16 |

17 | hasSafeMode()): ?> 18 |

19 | 20 |

21 |

22 | 23 |
24 | 25 |
26 |

27 |

28 |

posix_getpwuid function has been disabled. Please contact your server administrator.') ?>

29 |
30 | 31 |
32 |

33 | canCreateFolder()): ?> 34 |

getFolderOwner(), $this->getTestFolderChmod()) ?>

35 | getTestFolderChmod() === null): ?> 36 |

37 |

38 | 39 |

40 |

getTestFolderOwner(), $this->getFolderOwner(), $this->getTestFolderChmod(), (defined('PHP_WINDOWS_VERSION_BUILD') ? '777' : __('775, 755, 770, 750 or 705'))) ?>

41 | 42 |
43 |
44 |

45 | canCreateFile()): ?> 46 |

getFileOwner(), $this->getTestFileChmod()) ?>

47 | getTestFileChmod() === null): ?> 48 |

49 |

50 | 51 |

52 |

getTestFileOwner(), $this->getFileOwner(), $this->getTestFileChmod(), (defined('PHP_WINDOWS_VERSION_BUILD') ? '666' : __('664, 644, 660, 640 or 604'))) ?>

53 | 54 |
55 | 56 | 57 |
58 | failed()): ?> 59 |

60 | 61 |

62 | 63 |
64 | 65 |

66 |
67 | 68 | -------------------------------------------------------------------------------- /check/views/index.phtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contao Check <?php echo CONTAO_CHECK_VERSION ?> 6 | 7 | 8 | 9 | 10 |
11 |

Contao Check

12 |
13 |

14 |
15 |
16 |

17 |
    18 | supportsContao2()): ?> 19 |
  • 20 | 21 |
  • 22 | 23 | supportsContao3()): ?> 24 |
  • 25 | 26 |
  • 27 | 28 | supportsContao4()): ?> 29 |
  • 30 | 31 |
  • 32 | 33 | supportsContao45()): ?> 34 |
  • 35 | 36 |
  • 37 | 38 |
39 |
40 |
41 |

42 |
    43 | 44 |
  • 45 | 46 | canCreateFiles()): ?> 47 |
  • 48 | 49 |
  • 50 | 51 | 52 |
53 |
54 |
55 |

56 |
    57 | canUseLiveUpdate()): ?> 58 |
  • 59 | 60 |
  • 61 | 62 | 63 |
  • 64 | 65 | canUseComposer()): ?> 66 |
  • 67 | 68 |
  • 69 | 70 | 71 | canUseRepository()): ?> 72 |
  • 73 | 74 |
  • 75 | 76 |
77 |
78 |
79 |

80 |
81 |
82 | 83 | -------------------------------------------------------------------------------- /check/views/live-update.phtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contao Check <?php echo CONTAO_CHECK_VERSION ?> 6 | 7 | 8 | 9 | 10 |
11 |

Contao Check

12 |
13 |

14 |
15 |
16 |

17 | hasPhp()): ?> 18 |

19 | 20 |

21 |

http://pecl.php.net/package/phar') ?>

22 | 23 |
24 |
25 |

26 | hasPhar()): ?> 27 |

28 | 29 |

30 |

31 | 32 |
33 |
34 |

35 | hasXCache()): ?> 36 |

37 | 38 |

39 |

40 | 41 |
42 |
43 |

44 | hasSsl()): ?> 45 |

46 | 47 |

48 |

49 | 50 |
51 |
52 |

ionCube Loader

53 | hasIonCube()): ?> 54 |

55 | 56 |

57 |

http://forum.ioncube.com/viewtopic.php?p=8867') ?>

58 | 59 |
60 |
61 |

62 | hasSuhosin()): ?> 63 |

64 | 65 |

66 |

suhosin.executor.include.whitelist = phar') ?>

67 | 68 |
69 |
70 |

71 | hasDetectUnicode()): ?> 72 |

73 | 74 |

75 |

detect_unicode = Off. This is a PHP bug which might be fixed in the future. More information is available here: %s'), 'https://bugs.php.net/bug.php?id=53199') ?>

76 | 77 |
78 |
79 |

FastCGI+eAccelerator

80 | isFastCgiEaccelerator()): ?> 81 |

82 | 83 |

84 |

85 | 86 |
87 |
88 |

89 | canConnect()): ?> 90 |

91 | 92 |

93 |

94 | 95 |
96 |
97 | isAvailable()): ?> 98 |

99 | 100 |

101 | 102 |
103 |

104 |
105 | 106 | -------------------------------------------------------------------------------- /check/views/repository.phtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contao Check <?php echo CONTAO_CHECK_VERSION ?> 6 | 7 | 8 | 9 | 10 |
11 |

Contao Check

12 |
13 |

14 |
15 |
16 |

17 | hasSoap()): ?> 18 |

19 | 20 |

21 |

Nusoap') ?>

22 | 23 |
24 |
25 |

26 | hasSsl()): ?> 27 |

28 | 29 |

30 |

31 | 32 |
33 |
34 |

35 | canConnect()): ?> 36 |

37 | 38 |

39 |

40 | 41 |
42 |
43 | isAvailable()): ?> 44 |

45 | 46 |

47 | 48 |
49 |

50 |
51 | 52 | -------------------------------------------------------------------------------- /check/views/validator.phtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contao Check <?php echo CONTAO_CHECK_VERSION ?> 6 | 7 | 8 | 9 | 10 |
11 |

Contao Check

12 |
13 |

14 |
15 | hasConstants()): ?> 16 |
17 |

18 |

19 |

20 |
21 | hasVersionFileError()): ?> 22 |
23 |

24 |

getVersionFileError()) ?>

25 |

getVersionFileUrl() . '" target="_blank" download>' . $this->getVersionFileUrl() . '') ?>

26 |
27 | isSupportedVersion()): ?> 28 |
29 |

30 |

31 |

32 |
33 | 34 |
35 |

36 |

37 |
38 | hasMissing()): ?> 39 |
40 |

41 |
    42 | getMissing() as $file): ?> 43 |
  • 44 | 45 |
46 |
47 | 48 | hasCorrupt()): ?> 49 |
50 |

51 |
    52 | getCorrupt() as $file): ?> 53 |
  • 54 | 55 |
56 |
57 | 58 | hasOptional()): ?> 59 |
60 |

61 |
    62 | getOptional() as $file): ?> 63 |
  • 64 | 65 |
66 |
67 | 68 |
69 | hasVersionError()): ?> 70 |

getVersionError() ?>

71 | isValid()): ?> 72 |

73 | 74 |

75 | 76 |
77 | 78 |

79 |
80 | 81 | --------------------------------------------------------------------------------