[TASK] Move vendor/ directory out of typo3/ 95/42495/3
authorHelmut Hummel <helmut.hummel@typo3.org>
Tue, 11 Aug 2015 00:15:42 +0000 (02:15 +0200)
committerBenni Mack <benni@typo3.org>
Tue, 11 Aug 2015 15:02:18 +0000 (17:02 +0200)
The typo3/ directory must currently be exposed in the web root for TYPO3 to work properly.
Having the vendor dir with all composer dependencies in typo3/vendor however means, that
these will also be exposed. This can be a security risk, which can be avoided by simply
moving the vendor directory one level up.

By doing so, a web directory which contains only two symlinks (typo3 and index.php) and no
sources or link to the sources, will be protected from this risk.

Resolves: #68918
Releases: master
Change-Id: I5e504520102f94c81897945b41043d930cfc5b5f
Reviewed-on: http://review.typo3.org/42495
Reviewed-by: Mathias Brodala <mbrodala@pagemachine.de>
Tested-by: Mathias Brodala <mbrodala@pagemachine.de>
Reviewed-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
31 files changed:
.gitignore
.travis.yml
_.htaccess
composer.json
composer.lock
index.php
typo3/ajax.php
typo3/alt_clickmenu.php
typo3/alt_db_navframe.php
typo3/alt_doc.php
typo3/alt_file_navframe.php
typo3/browser.php
typo3/cli_dispatch.phpsh
typo3/db_new.php
typo3/dummy.php
typo3/index.php
typo3/init.php
typo3/login_frameset.php
typo3/logout.php
typo3/mod.php
typo3/move_el.php
typo3/show_item.php
typo3/sysext/core/Build/FunctionalTestsBootstrap.php
typo3/sysext/core/Build/UnitTestsBootstrap.php
typo3/sysext/core/Documentation/Changelog/7.2/Breaking-66001-ComposerVendorDirectoryChanged.rst
typo3/sysext/core/Tests/FunctionalTestCase.php
typo3/sysext/core/Tests/FunctionalTestCaseBootstrapUtility.php
typo3/sysext/install/Start/Install.php
typo3/tce_db.php
typo3/tce_file.php
typo3/thumbs.php

index cb8f527..a3a9c22 100644 (file)
@@ -37,8 +37,7 @@ typo3/sysext/core/Build/Configuration/Acceptance/Support/AcceptanceTester.php
 #
 # Ignore composer stuff
 bin/*
-Packages/*
-typo3/vendor/*
+vendor/*
 #
 # Ignore common TYPO3 CMS directories
 typo3temp/*
index d3a558a..4551360 100644 (file)
@@ -81,7 +81,7 @@ script:
     if [[ "$PHP_LINT" == "yes" ]]; then
         echo;
         echo "Running php lint";
-        find typo3/ -name \*.php -not -path "typo3/vendor/*" | parallel --gnu php -d display_errors=stderr -l {} > /dev/null \;
+        find typo3/ -name \*.php -not -path "vendor/*" | parallel --gnu php -d display_errors=stderr -l {} > /dev/null \;
     fi
   - >
     if [[ "$XLF_CHECK" == "yes" ]]; then
index 2e06138..55c51ae 100644 (file)
@@ -279,7 +279,8 @@ AddDefaultCharset utf-8
        RewriteRule _(?:recycler|temp)_/ - [F]
        RewriteRule fileadmin/templates/.*\.(?:txt|ts)$ - [F]
        RewriteRule typo3temp/logs/ - [F]
-       RewriteRule (?:typo3conf/ext|typo3/sysext|typo3/ext|typo3/vendor)/[^/]+/(?:Configuration|Resources/Private|Tests?)/ - [F]
+       RewriteRule ^(vendor|typo3_src) - [F]
+       RewriteRule (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?)/ - [F]
 
        # Access block for files or folders starting with a dot
        RewriteCond %{SCRIPT_FILENAME} -d [OR]
index 05f80d7..435ce88 100644 (file)
@@ -24,7 +24,6 @@
                "news": "nntp://lists.typo3.org"
        },
        "config": {
-               "vendor-dir": "typo3/vendor",
                "bin-dir": "bin"
        },
        "require": {
                "classmap": ["typo3/sysext/extbase/Tests/Unit/Object/Container/Fixtures/"]
        },
        "include-path": [
-               "typo3/vendor/pear/http_request2/"
+               "vendor/pear/http_request2/"
        ]
 }
index 72d26e6..fcb5a78 100644 (file)
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "6baf4c6d3b67a0f30e2f1d9f6c84f446",
+    "hash": "ea3db265be575195f1c13825714f6e23",
     "packages": [
         {
             "name": "doctrine/instantiator",
index 4a62d4c..32bba38 100644 (file)
--- a/index.php
+++ b/index.php
@@ -29,6 +29,6 @@ if (version_compare(PHP_VERSION, '5.5.0', '<')) {
 
 // Set up the application for the Frontend
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/typo3/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/typo3/../vendor/autoload.php';
        (new \TYPO3\CMS\Frontend\Http\Application($classLoader))->run();
 });
index b87996e..1a6c119 100644 (file)
@@ -19,7 +19,7 @@
  * See $TYPO3_CONF_VARS['BE']['AJAX'] and the Core APIs on how to register an AJAX call in the TYPO3 Backend.
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'The entry point to ajax.php was moved to index.php with ajaxID given. Please use BackendUtility::getAjaxUrl(\'myAjaxKey\') to link to the AJAX Call. This script will be removed in TYPO3 CMS 8.'
index 2235c4b..5c36dc3 100644 (file)
@@ -24,7 +24,7 @@
  * If you want to integrate a context menu in your scripts, please see template::getContextMenuCode()
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog('alt_clickmenu.php is deprecated as of TYPO3 CMS 7, and will not work anymore, please use the ajax.php functionality.');
                $clickMenuController = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Controller\ClickMenuController::class);
index e13e006..3960db0 100644 (file)
@@ -16,7 +16,7 @@
  * Page navigation tree for the Web module
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog('Usage of alt_db_navframe.php is deprecated since TYPO3 CMS 7, and will be removed in TYPO3 CMS 8');
                // Make instance if it is not an AJAX call
index e561483..f7a2758 100644 (file)
@@ -18,7 +18,7 @@
  * which allows the user to edit the content of one or more database records.
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Backend\Utility\BackendUtility::lockRecords();
 
index 83da1cb..93bc42d 100644 (file)
@@ -17,7 +17,7 @@
  */
 
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog('Usage of alt_file_navframe.php is deprecated since TYPO3 CMS 7, and will be removed in TYPO3 CMS 8');
 
index adf8b62..cec437f 100644 (file)
@@ -16,7 +16,7 @@
  * This is the frameset to the file/record browser window
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'The entry point to the file/record browser window was moved to an own module. Please use BackendUtility::getModuleUrl(\'browser\') to link to browser.php. This script will be removed in TYPO3 CMS 8.'
index 0030ad5..08e4152 100755 (executable)
@@ -22,6 +22,6 @@
  * $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['cliKeys'].
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Console\Application($classLoader))->run();
 });
index 312ca55..276fccc 100644 (file)
@@ -19,7 +19,7 @@
  * Includes a wizard mode for visually pointing out the position of new pages
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'The entry point to create a new database entry was moved to an own module. Please use BackendUtility::getModuleUrl(\'db_new\') to link to db_new.php. This script will be removed in TYPO3 CMS 8.'
index 86d161d..3512441 100644 (file)
@@ -16,7 +16,7 @@
  * Dummy document - displays nothing but background color.
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'The entry point to the dummy window was moved to an own module. Please use BackendUtility::getModuleUrl(\'dummy\') to link to dummy.php. This script will be removed in TYPO3 CMS 8.'
index 17e211a..7f09f82 100644 (file)
@@ -16,6 +16,6 @@
  * Main entry point for all backend-related scripts.
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run();
 });
index 6056d6c..9e846af 100644 (file)
@@ -39,7 +39,7 @@
  * scripts as well.
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog('Usage of typo3/init.php is deprecated since TYPO3 CMS 7, and will be removed in TYPO3 CMS 8. Initialize the bootstrap call directly in your entry script.');
        });
index ecf976c..73b54fb 100644 (file)
@@ -19,7 +19,7 @@
  */
 define('TYPO3_PROCEED_IF_NO_USER', 1);
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'Login frameset is moved to an own module. Please use BackendUtility::getModuleUrl(\'login_frameset\') to link to login_frameset.php. This script will be removed in TYPO3 CMS 8.'
index c753408..70ae4a7 100644 (file)
@@ -17,7 +17,7 @@
  * This script saves the interface positions and calls the closeTypo3Windows in the frameset
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'The entry point to logout was moved to an own module. Please use BackendUtility::getModuleUrl(\'logout\') to link to logout.php. This script will be removed in TYPO3 CMS 8.'
index b0294d1..0604a54 100644 (file)
@@ -20,7 +20,7 @@ namespace TYPO3\CMS\Backend;
  * which usually uses the BackendModuleRequestHandler
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'The entry point to mod.php was moved to index.php with "M" given. Please use BackendUtility::getModuleUrl(\'myModuleKey\') to link to a module. This script will be removed in TYPO3 CMS 8.'
index 396a18d..a38fb12 100644 (file)
@@ -17,7 +17,7 @@
  * Moving pages or content elements (tt_content) around in the system via a page tree navigation.
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'Moving an element is moved to an own module. Please use BackendUtility::getModuleUrl(\'move_element\') to link to move_el.php. This script will be removed in TYPO3 CMS 8.'
index 1d970b7..2bb2fe3 100644 (file)
@@ -13,7 +13,7 @@
  */
 
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'The entry point to show_item was moved to an own module. Please use BackendUtility::getModuleUrl(\'show_item\') to link to show_item.php. This script will be removed in TYPO3 CMS 8.'
index 2825531..61417d6 100644 (file)
@@ -57,7 +57,7 @@ class FunctionalTestsBootstrap {
                }
                if (!class_exists(BaseTestCase::class)) {
                        // PHPUnit is invoked globally, so we need to include the project autoload file
-                       require_once __DIR__ . '/../../../vendor/autoload.php';
+                       require_once __DIR__ . '/../../../../vendor/autoload.php';
                }
 
                return $this;
index 191742d..b4578bc 100644 (file)
@@ -26,12 +26,12 @@ use TYPO3\CMS\Core\Core\Bootstrap;
  * But it is also possible to use other installations of PHPUnit and VFS
  *
  *  * Call whole unit test suite, example:
- * - cd /var/www/t3master/foo  # Document root of TYPO3 CMS instance (location of index.php)
- * - typo3conf/ext/phpunit/Composer/vendor/bin/phpunit -c typo3/sysext/core/Build/UnitTests.xml
+ * - cd /var/www/t3master/foo  # Document root of TYPO3 CMS sources (location of index.php)
+ * - typo3/../bin/phpunit -c typo3/sysext/core/Build/UnitTests.xml
  *
  * Call single test case, example:
  * - cd /var/www/t3master/foo  # Document root of TYPO3 CMS instance (location of index.php)
- * - typo3conf/ext/phpunit/Composer/vendor/bin/phpunit \
+ * - typo3/../bin/phpunit \
  *     --bootstrap typo3/sysext/core/Build/UnitTestsBootstrap.php \
  *     typo3/sysext/core/Tests/Uinit/DataHandling/DataHandlerTest.php
  */
@@ -77,7 +77,7 @@ class UnitTestsBootstrap {
                array_shift($_SERVER['argv']);
                $flatArguments = implode(' ', $_SERVER['argv']);
                echo 'Please run the unit tests using the following command:' . chr(10) .
-                       sprintf('typo3conf/ext/phpunit/Composer/vendor/bin/phpunit %s', $flatArguments) . chr(10) .
+                       sprintf('typo3/../bin/phpunit %s', $flatArguments) . chr(10) .
                        chr(10);
 
                exit(1);
@@ -171,7 +171,7 @@ class UnitTestsBootstrap {
         * @return UnitTestsBootstrap fluent interface
         */
        protected function includeAndStartCoreBootstrap() {
-               $classLoaderFilepath = PATH_site . '/typo3/vendor/autoload.php';
+               $classLoaderFilepath = PATH_site . '/typo3/../vendor/autoload.php';
                if (!file_exists($classLoaderFilepath)) {
                        die('ClassLoader can\'t be loaded. Please check your path or set an environment variable \'TYPO3_PATH_WEB\' to your root path.');
                }
index 53ce460..7193af9 100644 (file)
@@ -1,11 +1,11 @@
-=======================================================================================
-Breaking: #66001 - Third-party libraries installed via composer are now in typo3/vendor
-=======================================================================================
+=================================================================================
+Breaking: #66001 - Third-party libraries installed via composer are now in vendor
+=================================================================================
 
 Description
 ===========
 
-All composer-installed libraries which the TYPO3 Core uses are now installed under typo3/vendor
+All composer-installed libraries which the TYPO3 Core uses are now installed under ``vendor`` (composer default vendor directory)
 when running ``composer install``. This way the packaging process for releasing TYPO3 CMS as tarball or zip
 can trigger a fully working installation without having to ship Packages/ for third-party libraries. Before composer
 installed all third-party libraries in the folder ``Packages/Libraries``.
@@ -30,5 +30,5 @@ TYPO3 distribution from composer.typo3.org are not affected.
 Migration
 =========
 
-Running ``rm -rf typo3/vendor/ bin/ Packages/Libraries/ composer.lock; composer install`` will make PHPunit
+Running ``rm -rf vendor/ bin/ Packages/Libraries/ composer.lock; composer install`` will make PHPunit
 work again.
index 34e8535..127a95e 100644 (file)
@@ -37,11 +37,11 @@ use TYPO3\CMS\Core\Tests\Functional\Framework\Frontend\Response;
  *
  * Call whole functional test suite, example:
  * - cd /var/www/t3master/foo  # Document root of CMS instance, here is index.php of frontend
- * - ./typo3conf/ext/phpunit/Composer/vendor/bin/phpunit -c typo3/sysext/core/Build/FunctionalTests.xml
+ * - typo3/../bin/phpunit -c typo3/sysext/core/Build/FunctionalTests.xml
  *
  * Call single test case, example:
  * - cd /var/www/t3master/foo  # Document root of CMS instance, here is index.php of frontend
- * - ./typo3conf/ext/phpunit/Composer/vendor/bin/phpunit \
+ * - typo3/../bin/phpunit \
  *     --process-isolation \
  *     --bootstrap typo3/sysext/core/Build/FunctionalTestsBootstrap.php \
  *     typo3/sysext/core/Tests/Functional/DataHandling/DataHandlerTest.php
index e5d56dc..e293577 100644 (file)
@@ -424,7 +424,7 @@ class FunctionalTestCaseBootstrapUtility {
                define('TYPO3_MODE', 'BE');
                define('TYPO3_cliMode', TRUE);
 
-               $classLoader = require $this->instancePath . '/typo3/vendor/autoload.php';
+               $classLoader = require $this->instancePath . '/typo3/../vendor/autoload.php';
                \TYPO3\CMS\Core\Core\Bootstrap::getInstance()
                        ->initializeClassLoader($classLoader)
                        ->baseSetup('')
index b91adb8..939d184 100644 (file)
@@ -104,6 +104,6 @@ if (version_compare(PHP_VERSION, '5.5.0', '<')) {
 
 // set up bare minimum application: class loader, LocalConfiguration, but no extensions and such
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/../../../vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../../../../vendor/autoload.php';
        (new \TYPO3\CMS\Install\Http\Application($classLoader))->run();
 });
index a343cfa..c9964d7 100644 (file)
@@ -19,7 +19,7 @@
  * For syntax and API information, see the document 'TYPO3 Core APIs'
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'The entry point to data handling via DataHandler was moved to an own module. Please use BackendUtility::getModuleUrl(\'tce_db\') to link to tce_db.php / DataHandler. This script will be removed in TYPO3 CMS 8.'
index 2b7de29..6565a61 100644 (file)
@@ -20,7 +20,7 @@
  * For syntax and API information, see the document 'TYPO3 Core APIs'
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'File handling entry point was moved an own module. Please use BackendUtility::getModuleUrl(\'tce_file\') to link to tce_file.php. This script will be removed in TYPO3 CMS 8.'
index bd4646e..548629c 100644 (file)
@@ -17,7 +17,7 @@
  * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use the corresponding Resource objects and Processing functionality
  */
 call_user_func(function() {
-       $classLoader = require __DIR__ . '/vendor/autoload.php';
+       $classLoader = require __DIR__ . '/../vendor/autoload.php';
        (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(function() {
                \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
                        'thumbs.php is no longer in use, please use the corresponding Resource objects to generate a preview functionality for thumbnails.'