Skip to content

Commit a21ec1f

Browse files
[FrameworkBundle] Fix autoloader in insulated clients
1 parent 0217e87 commit a21ec1f

File tree

2 files changed

+15
-37
lines changed

2 files changed

+15
-37
lines changed

Client.php

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -163,34 +163,36 @@ protected function getScript($request)
163163
{
164164
$kernel = str_replace("'", "\\'", serialize($this->kernel));
165165
$request = str_replace("'", "\\'", serialize($request));
166+
$errorReporting = error_reporting();
166167

167-
$r = new \ReflectionObject($this->kernel);
168+
$requires = '';
169+
foreach (get_declared_classes() as $class) {
170+
if (0 === strpos($class, 'ComposerAutoloaderInit')) {
171+
$r = new \ReflectionClass($class);
172+
$file = dirname(dirname($r->getFileName())).'/autoload.php';
173+
if (file_exists($file)) {
174+
$requires .= "require_once '".str_replace("'", "\\'", $file)."';\n";
175+
}
176+
}
177+
}
168178

169-
$autoloader = dirname($r->getFileName()).'/autoload.php';
170-
if (is_file($autoloader)) {
171-
$autoloader = str_replace("'", "\\'", $autoloader);
172-
} else {
173-
$autoloader = '';
179+
if (!$requires) {
180+
throw new \RuntimeException('Composer autoloader not found.');
174181
}
175182

176-
$path = str_replace("'", "\\'", $r->getFileName());
183+
$requires .= "require_once '".str_replace("'", "\\'", (new \ReflectionObject($this->kernel))->getFileName())."';\n";
177184

178185
$profilerCode = '';
179186
if ($this->profiler) {
180187
$profilerCode = '$kernel->getContainer()->get(\'profiler\')->enable();';
181188
}
182189

183-
$errorReporting = error_reporting();
184-
185190
$code = <<<EOF
186191
<?php
187192
188193
error_reporting($errorReporting);
189194
190-
if ('$autoloader') {
191-
require_once '$autoloader';
192-
}
193-
require_once '$path';
195+
$requires
194196
195197
\$kernel = unserialize('$kernel');
196198
\$kernel->boot();

Tests/Functional/app/AppKernel.php

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,6 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle\Tests\Functional\app;
1313

14-
// get the autoload file
15-
$dir = __DIR__;
16-
$lastDir = null;
17-
while ($dir !== $lastDir) {
18-
$lastDir = $dir;
19-
20-
if (file_exists($dir.'/autoload.php')) {
21-
require_once $dir.'/autoload.php';
22-
break;
23-
}
24-
25-
if (file_exists($dir.'/autoload.php.dist')) {
26-
require_once $dir.'/autoload.php.dist';
27-
break;
28-
}
29-
30-
if (file_exists($dir.'/vendor/autoload.php')) {
31-
require_once $dir.'/vendor/autoload.php';
32-
break;
33-
}
34-
35-
$dir = dirname($dir);
36-
}
37-
3814
use Symfony\Component\Config\Loader\LoaderInterface;
3915
use Symfony\Component\Filesystem\Filesystem;
4016
use Symfony\Component\HttpKernel\Kernel;

0 commit comments

Comments
 (0)