Commit 86d19fcf authored by Fabien Potencier's avatar Fabien Potencier

merged branch pete-otaqui/compile_with_autoload_classmap (PR #295)

Commits
-------

3f22ac3c added autoload_classmap.php to the list of .composer files to include

Discussion
----------

added autoload_classmap.php to the list of .composer files to include

Hi,

I suspect this is my own stupidity since no-one else has reported it, but for me the silex.phar dies when required because it doesn't contain a file that it tries to require: "vendor/.composer/autoload_classmap.php".

I've tried the silex.phar from the project homepage, and also compiled my own from the source code with the same result.  Unpacking either shows indeed that there is no autoload_classmap.php file.

Had a quick look and saw that some other vendor/.composer/*.php files were listed in the Compiler.php class, added in the missing classmap file, and everything seemed to work fine.

As I said, I think I must be missing something, because otherwise silex would be completely broken for just about everybody! using the phar!

---------------------------------------------------------------------------

by chanmix51 at 2012-03-28T12:50:23Z

Hi,

Afaik, the .phar archive does not work with composer as it has not been managed by it. Hence composer does not know anything about phars you could use. I may be wrong but If you use the phar you should use Silex's autoloader or add silex to your dependencies in your `composer.json` instead.

---------------------------------------------------------------------------

by igorw at 2012-03-28T13:54:31Z

@pete-otaqui This should indeed fix the issue 👍

---------------------------------------------------------------------------

by pete-otaqui at 2012-03-28T14:19:44Z

I think you misunderstand me.  I'm not using composer, I just tried the example _from the Silex homepage_:

```php
<?php
require_once __DIR__.'/silex.phar';

$app = new Silex\Application();

$app->get('/hello/{name}', function ($name) use ($app) {
  return 'Hello '.$app->escape($name);
});

$app->run();
```

For me this throws the following error:

```
Warning: require(phar:///var/www/silex/silex.phar/vendor/.composer/autoload_classmap.php): failed to open stream: phar error: "vendor/.composer/autoload_classmap.php" is not a file in phar "/var/www/silex/silex.phar" in phar:///var/www/silex/silex.phar/vendor/.composer/autoload.php on line 17

Fatal error: require(): Failed opening required 'phar:///var/www/silex/silex.phar/vendor/.composer/autoload_classmap.php' (include_path='.:/usr/share/php:/usr/share/pear') in phar:///var/www/silex/silex.phar/vendor/.composer/autoload.php on line 17
```

If you look at the commit I made, you'll see that the Compiler class (which creates the silex.phar) does indeed include some stuff from vendor/.composer/ ... it's just that it doesn't include "autoload_classmap.php".

Possibly this file is supposed to be automatically generated by something inside silex.phar, and for some reason mine isn't writeable, but in that case I ought really to get a different error.

---------------------------------------------------------------------------

by chanmix51 at 2012-03-28T14:23:02Z

Oh sorry, didn't get what the problem was.

---------------------------------------------------------------------------

by igorw at 2012-03-28T18:41:33Z

Fix confirmed 👍 @fabpot please merge asap

---------------------------------------------------------------------------

by simensen at 2012-03-29T15:43:54Z

I was just going to open a PR on this. Good thing I checked first. :)
parents 3fe1e25b 3f22ac3c
...@@ -71,6 +71,7 @@ class Compiler ...@@ -71,6 +71,7 @@ class Compiler
$this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/.composer/autoload.php')); $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/.composer/autoload.php'));
$this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/.composer/ClassLoader.php')); $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/.composer/ClassLoader.php'));
$this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/.composer/autoload_namespaces.php')); $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/.composer/autoload_namespaces.php'));
$this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/.composer/autoload_classmap.php'));
// Stubs // Stubs
$phar->setStub($this->getStub()); $phar->setStub($this->getStub());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment