"Class not found" using php/silex

amazon-ec2, apache, autoload, php, silex

Solution

As suspected, you are using some sort of git-based deployment process.

Currently there is no tagged stable release of silex (EDIT: as of now, there is). As a result, composer will install it from source, resulting in the silex github repository being cloned into `vendor/silex/silex`. Since that folder is a git repo itself, those files cannot be added to your main repo. Which means that on your server the `vendor/silex/silex` directory simply will not exist.

If you really want to, you can apply the fix of running `composer install` with the `--prefer-dist` flag, which will force to install silex from a zip archive, allowing the directory to be added to your git repo.

But I would say that you should not be committing your vendors into version control. This is also covered by this entry in the composer FAQ:

- Should I commit the dependencies in my vendor directory?

I suggest adding `vendor` to your `.gitignore` and running `composer install` as part of your CI and deployment process.

Problem

I set up a Silex-project local using a XAMPP on Mac. Everything works fine. Now I uploaded the files to my Amazon ec2 server and tried to run it. I always get the php errormessage: ``` "Fatal error: Class 'Silex\Application' not found in /opt/bitnami/apps/..." ``` I'm using Composer to handle the dependencies. The first lines of my file look like this: ``` <?php require_once __DIR__.'/../vendor/autoload.php'; $app = new Silex\Application(); $app['debug'] = true; ``` Anyone has a clue how to solve that? Where could there be a problem? Thanks a lot! Cheers

Original source