[TASK][!!!] Remove support for safe_mode
authorJigal van Hemert <jigal@xs4all.nl>
Sun, 3 Apr 2011 07:41:49 +0000 (09:41 +0200)
committerSusanne Moog <typo3@susannemoog.de>
Sun, 17 Apr 2011 13:40:26 +0000 (15:40 +0200)
Change-Id: Iae45d949855ceec1e9dc9bf6e27d4885749375d5
Resolves: #25332
Reviewed-on: http://review.typo3.org/1447
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Susanne Moog
Tested-by: Susanne Moog
12 files changed:
t3lib/class.t3lib_div.php
t3lib/class.t3lib_extfilefunc.php
t3lib/class.t3lib_htmlmail.php
t3lib/class.t3lib_tcemain.php
t3lib/class.t3lib_tsparser_ext.php
t3lib/config_default.php
t3lib/utility/class.t3lib_utility_command.php
t3lib/utility/class.t3lib_utility_mail.php
typo3/sysext/indexed_search/class.external_parser.php
typo3/sysext/lang/locallang_csh_sysfilem.xml
typo3/sysext/reports/reports/locallang.xml
typo3/sysext/tstemplate_info/class.tx_tstemplateinfo.php

index 7d47598..5c4506c 100644 (file)
@@ -2759,7 +2759,6 @@ final class t3lib_div {
                        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
                        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, max(0, intval($GLOBALS['TYPO3_CONF_VARS']['SYS']['curlTimeout'])));
 
-                               // may fail (PHP 5.2.0+ and 5.1.5+) when open_basedir or safe_mode are enabled
                        $followLocation = @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 
                        if (is_array($requestHeaders)) {
@@ -2787,7 +2786,7 @@ final class t3lib_div {
                                                // We hit a redirection but we couldn't follow it
                                        if (!$followLocation && $curlInfo['status'] >= 300 && $curlInfo['status'] < 400) {
                                                $report['error'] = -1;
-                                               $report['message'] = 'Couldn\'t follow location redirect (either PHP configuration option safe_mode or open_basedir is in effect).';
+                                               $report['message'] = 'Couldn\'t follow location redirect (PHP configuration option open_basedir is in effect).';
                                        } elseif ($includeHeader) {
                                                        // Set only for $includeHeader to work exactly like PHP variant
                                                $report['http_code'] = $curlInfo['http_code'];
@@ -4215,7 +4214,7 @@ final class t3lib_div {
        }
 
        /**
-        * Will move an uploaded file (normally in "/tmp/xxxxx") to a temporary filename in PATH_site."typo3temp/" from where TYPO3 can use it under safe_mode.
+        * Will move an uploaded file (normally in "/tmp/xxxxx") to a temporary filename in PATH_site."typo3temp/" from where TYPO3 can use it.
         * Use this function to move uploaded files to where you can work on them.
         * REMEMBER to use t3lib_div::unlink_tempfile() afterwards - otherwise temp-files will build up! They are NOT automatically deleted in PATH_site."typo3temp/"!
         * Usage: 6
@@ -5915,4 +5914,4 @@ final class t3lib_div {
        }
 }
 
-?>
+?>
\ No newline at end of file
index adf5a22..1fb76b7 100644 (file)
@@ -121,7 +121,7 @@ class t3lib_extFileFunctions extends t3lib_basicFileFunctions {
        var $useRecycler = 1; // 0 = no, 1 = if available, 2 = always
 
                // Internal, static:
-       var $PHPFileFunctions = 0; // If set, all fileoperations are done by the default PHP-functions. This is necessary under windows! On UNIX the system commands by exec() can be used unless safe_mode is enabled
+       var $PHPFileFunctions = 0; // If set, all fileoperations are done by the default PHP-functions. This is necessary under windows! On UNIX the system commands by exec() can be used
        var $dont_use_exec_commands = 0; // This is necessary under windows!
 
                // Internal, dynamic:
index ab4a074..590a532 100644 (file)
@@ -720,9 +720,7 @@ class t3lib_htmlmail {
                }
                $recipient = t3lib_div::normalizeMailAddress($this->recipient);
 
-                       // If safe mode is on, the fifth parameter to mail is not allowed, so the fix wont work on unix with safe_mode=On
-               $returnPathPossible = (!t3lib_utility_PhpOptions::isSafeModeEnabled() && $this->forceReturnPath);
-               if ($returnPathPossible) {
+               if ($this->forceReturnPath) {
                        $mailWasSent = t3lib_utility_Mail::mail(
                                $recipient,
                                $this->subject,
@@ -745,7 +743,7 @@ class t3lib_htmlmail {
                        $theParts[0] = str_replace('###SUBJECT###', $this->subject, $theParts[0]);
                        $theParts[1] = str_replace("/", LF, $theParts[1]);
                        $theParts[1] = str_replace("###MESSAGE###", $this->getContent('plain'), $theParts[1]);
-                       if ($returnPathPossible) {
+                       if ($this->forceReturnPath) {
                                $mailWasSent = t3lib_utility_Mail::mail(
                                        $this->from_email,
                                        $theParts[0],
index c651d0a..25f2380 100644 (file)
@@ -1671,7 +1671,7 @@ class t3lib_TCEmain {
                                                        // Check various things before copying file:
                                                if (@is_dir($dest) && (@is_file($theFile) || @is_uploaded_file($theFile))) { // File and destination must exist
 
-                                                               // Finding size. For safe_mode we have to rely on the size in the upload array if the file is uploaded.
+                                                               // Finding size.
                                                        if (is_uploaded_file($theFile) && $theFile == $uploadedFileArray['tmp_name']) {
                                                                $fileSize = $uploadedFileArray['size'];
                                                        } else {
index 4160072..86c7127 100644 (file)
@@ -1760,7 +1760,7 @@ class t3lib_tsparser_ext extends t3lib_TStemplate {
                }
                $fI = t3lib_div::split_fileref($theRealFileName);
                if ($theRealFileName && (!$extList || t3lib_div::inList($extList, $fI['fileext']))) {
-                       $tmp_upload_name = t3lib_div::upload_to_tempfile($tmp_name); // If there is an uploaded file, move it for the sake of safe_mode.
+                       $tmp_upload_name = t3lib_div::upload_to_tempfile($tmp_name); // If there is an uploaded file, move it.
 
                                // Saving resource
                        $alternativeFileName = array();
index c098ad5..d71a440 100644 (file)
@@ -91,7 +91,7 @@ $TYPO3_CONF_VARS = array(
                'setDBinit' => '-1',                                            // String (textarea): Commands to send to database right after connecting, separated by newline. Ignored by the DBAL extension except for the 'native' type!
                'dbClientCompress' => FALSE,                    // Boolean: if true, data exchange between TYPO3 and database server will be compressed. This may improve performance if (1) database serever is on the different server and (2) network connection speed to database server is 100mbps or less. CPU usage will be higher if this option is used but database operations will be executed faster due to much less (up to 3 times) database network traffic. This option has no effect if MySQL server is localhost.
                'setMemoryLimit' => 0,                                  // Integer: memory_limit in MB: If more than 16, TYPO3 will try to use ini_set() to set the memory limit of PHP to the value. This works only if the function ini_set() is not disabled by your sysadmin.
-               'forceReturnPath' => FALSE,                             // Boolean: <em>Note: This option is deprecated as of TYPO3 4.5 together with t3lib_htmlmail. This behaviour is the default using the new t3lib_mail methods.</em> Force return path to be applied in mail() calls. If this is set, all calls to mail() done by t3lib_htmlmail will be called with '-f&lt;return_path&gt; as the 5th parameter. This will make the return path correct on almost all Unix systems. There is a known problem with Postfix below version 2: Mails are not sent if this option is set and Postfix is used. On Windows platforms, the return path is set via a call to ini_set. This has no effect if safe_mode in PHP is on.
+               'forceReturnPath' => FALSE,                             // Boolean: <em>Note: This option is deprecated as of TYPO3 4.5 together with t3lib_htmlmail. This behaviour is the default using the new t3lib_mail methods.</em> Force return path to be applied in mail() calls. If this is set, all calls to mail() done by t3lib_htmlmail will be called with '-f&lt;return_path&gt; as the 5th parameter. This will make the return path correct on almost all Unix systems. There is a known problem with Postfix below version 2: Mails are not sent if this option is set and Postfix is used. On Windows platforms, the return path is set via a call to ini_set.
                'serverTimeZone' => 1,                                  // Integer: GMT offset of servers time (from time()). Default is "1" which is "GMT+1" (central european time). This value can be used in extensions that are GMT aware and wants to convert times to/from other timezones.
                'phpTimeZone' => '',                                    // String: timezone to force for all date() and mktime() functions. A list of supported values can be found at <a href="http://php.net/manual/en/timezones.php" target="_blank">php.net</a>. If this is not set, a valid fallback will be searched for by PHP (php.ini's <a href="http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone" target="_blank">date.timezone</a> setting, server defaults, etc); and if no fallback is found, the value of "UTC" is used instead.
                'systemLog' => '',                                              // <p>String: semi-colon separated list. Defines one or more logging methods. Possible methods:</p><dl><dt>file,&lt;abs-path-to-file&gt;[,&lt;level&gt;]</dt><dd>logs to a file</dd><dt>mail,&lt;to&gt;[/&lt;from&gt;][,&lt;level&gt;]</dt><dd>sends the log entries via mail</dd><dt>syslog,&lt;facility&gt;,[,&lt;level&gt;]</dt><dd>uses the operating system's log. Facility may be one of LOCAL0..LOCAL7, USER (on Windows USER is the only valid type).</dd><dt>error_log[,,&lt;level&gt;]</dt><dd>uses the PHP error log</dd></dl><p>The &lt;level&gt; is the individual logging level (see <a href="#SYS-systemLogLevel">[SYS][systemLogLevel]</a>).</p>
@@ -211,7 +211,7 @@ $TYPO3_CONF_VARS = array(
                'showRefreshLoginPopup' => FALSE,               // Boolean: If set, the Ajax relogin will show a real popup window for relogin after the count down. Some auth services need this as they add custom validation to the login form. If it's not set, the Ajax relogin will show an inline relogin window.
                'adminOnly' => 0,                                               // <p>Integer (-1, 0, 1, 2)</p><dl><dt>-1</dt><dd>total shutdown for maintenance purposes</dd><dt>0</dt><dd>normal operation, everyone can login (default)</dd><dt>1</dt><dd>only admins can login</dd><dt>2</dt><dd>only admins and regular CLI users can login</dd></dl>
                'disable_exec_function' => FALSE,               // Boolean: Don't use exec() function (except for ImageMagick which is disabled by <a href="#GFX-im">[GFX][im]</a>=0). If set, all fileoperations are done by the default PHP-functions. This is nescessary under Windows! On Unix the system commands by exec() can be used, unless this is disabled.
-               'usePHPFileFunctions' => TRUE,                  // Boolean: If set, all fileoperations are done by the default PHP-functions. Default on Unix is using the system commands by exec(). You need to set this flag under safe_mode.
+               'usePHPFileFunctions' => TRUE,                  // Boolean: If set, all fileoperations are done by the default PHP-functions. Default on Unix is using the system commands by exec().
                'compressionLevel' => 0,                                // Determines output compression of BE output. Makes output smaller but slows down the page generation depending on the compression level. Requires a) zlib in your PHP installation and b) special rewrite rules for .css.gzip and .js.gzip (please see _.htacces for an example). Range 1-9, where 1 is least compression and 9 is greatest compression. 'true' as value will set the compression based on the PHP default settings (usually 5). Suggested and most optimal value is 5.
                'maxFileSize' => '10240',                               // Integer: If set this is the max filesize in KB's for file operations in the backend. Can be overridden through $TCA per table field separately.
                'forceCharset' => '-1',                                 // String: Normally the charset of the backend users language selection is used. If you set this value to a charset found in t3lib/csconvtbl/ (or "utf-8") the backend (and database) will ALWAYS use this charset. Always use a lowercase value. NOTICE: This option is deprecated since TYPO3 4.5, and will be removed in 4.7. Please use proper tools to set your installation to native UTF-8.
index 9c2760e..29b0703 100644 (file)
@@ -35,7 +35,7 @@ final class t3lib_utility_Command {
 
        /**
         * Wrapper function for php exec function
-        * Needs to be central to have better control and possible fix for safe_mode/low php version restrictions as occurred with IM/GM issues
+        * Needs to be central to have better control and possible fix for issues
         *
         * @static
         * @param  string  $command
index d726b82..0ffaecf 100644 (file)
@@ -98,10 +98,6 @@ final class t3lib_utility_Mail {
                                }
                        }
                } else {
-                       if (t3lib_utility_PhpOptions::isSafeModeEnabled() && !is_null($additionalParameters)) {
-                               $additionalParameters = null;
-                       }
-
                        if (is_null($additionalParameters)) {
                                $success = @mail($to, $subject, $messageBody, $additionalHeaders);
                        } else {
index 82c1005..e800cea 100755 (executable)
@@ -116,15 +116,13 @@ class tx_indexed_search_extparse {
                        return FALSE;
                }
 
-               $safeModeEnabled = t3lib_utility_PhpOptions::isSafeModeEnabled();
-
                        // Switch on file extension:
                switch($extension)      {
                        case 'pdf':
                                        // PDF
                                if ($indexerConfig['pdftools']) {
                                        $pdfPath = rtrim($indexerConfig['pdftools'], '/').'/';
-                                       if ($safeModeEnabled || (@is_file($pdfPath . 'pdftotext' . $exe) && @is_file($pdfPath . 'pdfinfo' . $exe))) {
+                                       if (@is_file($pdfPath . 'pdftotext' . $exe) && @is_file($pdfPath . 'pdfinfo' . $exe)) {
                                                $this->app['pdfinfo'] = $pdfPath.'pdfinfo'.$exe;
                                                $this->app['pdftotext'] = $pdfPath.'pdftotext'.$exe;
                                                        // PDF mode:
@@ -137,7 +135,7 @@ class tx_indexed_search_extparse {
                                        // Catdoc
                                if ($indexerConfig['catdoc'])   {
                                        $catdocPath = rtrim($indexerConfig['catdoc'], '/').'/';
-                                       if ($safeModeEnabled || @is_file($catdocPath . 'catdoc' . $exe)) {
+                                       if (@is_file($catdocPath . 'catdoc' . $exe)) {
                                                $this->app['catdoc'] = $catdocPath.'catdoc'.$exe;
                                                $extOK = TRUE;
                                        } else $this->pObj->log_setTSlogMessage(sprintf($this->sL('LLL:EXT:indexed_search/locallang.xml:catdocNotFound'), $catdocPath), 3);
@@ -148,7 +146,7 @@ class tx_indexed_search_extparse {
                                        // ppthtml
                                if ($indexerConfig['ppthtml'])  {
                                        $ppthtmlPath = rtrim($indexerConfig['ppthtml'], '/').'/';
-                                       if ($safeModeEnabled || @is_file($ppthtmlPath . 'ppthtml' . $exe)) {
+                                       if (@is_file($ppthtmlPath . 'ppthtml' . $exe)) {
                                                $this->app['ppthtml'] = $ppthtmlPath.'ppthtml'.$exe;
                                                $extOK = TRUE;
                                        } else $this->pObj->log_setTSlogMessage(sprintf($this->sL('LLL:EXT:indexed_search/locallang.xml:ppthtmlNotFound'), $ppthtmlPath), 3);
@@ -158,7 +156,7 @@ class tx_indexed_search_extparse {
                                        // Xlhtml
                                if ($indexerConfig['xlhtml'])   {
                                        $xlhtmlPath = rtrim($indexerConfig['xlhtml'], '/').'/';
-                                       if ($safeModeEnabled || @is_file($xlhtmlPath . 'xlhtml' . $exe)) {
+                                       if (@is_file($xlhtmlPath . 'xlhtml' . $exe)) {
                                                $this->app['xlhtml'] = $xlhtmlPath.'xlhtml'.$exe;
                                                $extOK = TRUE;
                                        } else $this->pObj->log_setTSlogMessage(sprintf($this->sL('LLL:EXT:indexed_search/locallang.xml:xlhtmlNotFound'), $xlhtmlPath), 3);
@@ -172,7 +170,7 @@ class tx_indexed_search_extparse {
                        case 'odt':             // Oasis OpenDocument Text
                                if ($indexerConfig['unzip'])    {
                                        $unzipPath = rtrim($indexerConfig['unzip'], '/').'/';
-                                       if ($safeModeEnabled || @is_file($unzipPath . 'unzip' . $exe)) {
+                                       if (@is_file($unzipPath . 'unzip' . $exe)) {
                                                $this->app['unzip'] = $unzipPath.'unzip'.$exe;
                                                $extOK = TRUE;
                                        } else $this->pObj->log_setTSlogMessage(sprintf($this->sL('LLL:EXT:indexed_search/locallang.xml:unzipNotFound'), $unzipPath), 3);
@@ -182,7 +180,7 @@ class tx_indexed_search_extparse {
                                        // Catdoc
                                if ($indexerConfig['unrtf'])    {
                                        $unrtfPath = rtrim($indexerConfig['unrtf'], '/').'/';
-                                       if ($safeModeEnabled || @is_file($unrtfPath . 'unrtf' . $exe)) {
+                                       if (@is_file($unrtfPath . 'unrtf' . $exe)) {
                                                $this->app['unrtf'] = $unrtfPath.'unrtf'.$exe;
                                                $extOK = TRUE;
                                        } else $this->pObj->log_setTSlogMessage(sprintf($this->sL('LLL:EXT:indexed_search/locallang.xml:unrtfNotFound'), $unrtfPath), 3);
index 935a681..6efd77f 100755 (executable)
@@ -24,7 +24,7 @@ If BASE is absolute you should enter the absolute path on the server, eg. &quot;
 &lt;strong&gt;Notice:&lt;/strong&gt; In any case, make sure the webserver user which PHP is running as has &lt;em&gt;at least&lt;/em&gt; read-access to the path. If not, the mount will simply not appear without any warnings.
 If you have problems - especially with absolute mounts - try to mount something &quot;simple&quot; like a relative path in fileadmin. If that is working well, try the absolute path.
 
-Your PHP-configuration may also impose other restrictions on you if safe_mode or open_basedir is enabled. Then use relative paths.</label>
+Your PHP-configuration may also impose other restrictions on you if open_basedir is enabled. Then use relative paths.</label>
                        <label index="_path.seeAlso">sys_filemounts:base,
 be_groups:file_mountpoints,
 sys_filemounts</label>
index 3bc5a42..c219657 100644 (file)
@@ -51,7 +51,7 @@
                        <label index="status_configuration_DeprecationLogEnabled">The deprecation log tracks whether old APIs are being used in extensions. Depending on the extensions you use and whether they use deprecated APIs it can happen that the log takes up quite some space over time. The more space it takes up, the more it may affect your installation's performance. It is recommended to disable deprecation log in production environments.</label>
                        <label index="status_configuration_DeprecationLogFile">You can find the deprecation log file at %s.</label>
                        <label index="status_configuration_DeprecationLogSize">Your deprecation log file currently takes up %s.</label>
-                       <label index="status_configuration_PhpSafeModeEnabled">PHP INI setting safe_mode "On" is discouraged since PHP 5.2 and deprecated since PHP 5.3 and should not be used anymore.</label>
+                       <label index="status_configuration_PhpSafeModeEnabled">PHP INI setting safe_mode "On" is deprecated since PHP 5.3 and is not supported by TYPO3 anymore.</label>
                        <label index="status_updateTaskTitle">System Status Update</label>
                        <label index="status_updateTaskDescription">Runs a system status check and sends notifications if problems have been found.</label>
                        <label index="status_updateTaskField_notificationEmail">Notification Email Address</label>
index 5d2253f..003e2e8 100644 (file)
@@ -259,7 +259,8 @@ class tx_tstemplateinfo extends t3lib_extobjbase {
                                                                $recData['sys_template'][$saveId][$field] = $val;
                                                                break;
                                                        case 'resources':
-                                                               $tmp_upload_name = t3lib_div::upload_to_tempfile($_FILES['resources']['tmp_name']);     // If there is an uploaded file, move it for the sake of safe_mode.
+                                                                       // If there is an uploaded file, move it.
+                                                               $tmp_upload_name = t3lib_div::upload_to_tempfile($_FILES['resources']['tmp_name']);
                                                                if ($tmp_upload_name)   {
                                                                        if ($tmp_upload_name!='none' && $_FILES['resources']['name'])   {
                                                                                $alternativeFileName[$tmp_upload_name] = trim($_FILES['resources']['name']);