Symfony Prod environment gives a 500 internal server erro - symfony-1.4

My project works just fine in it's dev environment. However, when I attempt to access the prod version that is without the *_dev.php url prefixes, I get redirected to the login page (as it should) and upon logging in it screams a 500 internal server error.
This is true for both the prod site and my dev machine. What's going wrong here?

Clear cache and set permission 777 to prod folder.
Command to clear cache: php bin/console cache:clear
Command to full permission: sudo chmod -R 777 /var/cache/prod
This should work!

I add a 500 error when deploying in production, but I did not get it when in dev environment. Nothing was valuable in the logs, and after trying everythong with permissions and cache, it seems that it was a perfect silent PHP crash.
The issue came from an EasyAdmin AssociationField that was retreiving too many items from the collection. That is why I saw this in prod but not in dev.
After applying a custom QueryBuilder, the error 500 disappeared.
Hope it can help, the difference between prod and dev is often permissions, but it can also be the database.

Related

Symfony - botched project with cache:clear

I have a little problem concerning cache:clear following a tutorial that told me if I have an error while running the command, I could delete the dev folder by hand in var/cache/dev
So when running the command to clear the cache, I got this error:
[Symfony\Component\Filesystem\Exception\IOException]
Failed to remove file "/var/www/html/Symfony/var/cache/de~/profiler/26/75/2d7526":
So as the error appeared I decided to delete the dev folder in /var/dev
But then I couldn't go anymore on my browser checking if everything worked fine. This error came up.
RuntimeException in ClassCollectionLoader.php line 309: Failed to write cache file "/var/www/html/Symfony/var/cache/dev/classes.php".
I have no idea as how to make it work again.
My dev and prod cache folders are back in my cache folder as expected, but that doesn't do anything. It won't work anymore.
So I'm a bit desperate.
Have you setup correctly the file permissions for the var folder?
See this link: http://symfony.com/doc/current/setup/file_permissions.html

Symfony 2 production env constant errors

I developed my Symfony 2.8 project locally on dev enviroment.
Than i needed to upload it to a server and run it on production.
I did all the steps:
1. Checked it out with git on the server
2. Ran composer install
3. Cleared cache, doctrine cache, installed the assets
4. Configured my database
Saying this ... I`m still getting problems like:
Internel server errors like
No route found for "GET ..
And for some reason it makes requests from time to time to app_dev.php - my ht access clearly states that directory index is app.php and etc
I get double template rendering - the same view is loaded two times - two menu section ... two content section
I am really frustrated, cause ive tried everything i know. Could someone help me, ill provide additional info if needed.
I need any suggestions, ideas and etc that could help me.
My .htaccess file - http://pastebin.com/4XHetMPV
First, try to remove your cache manually and clean your logs :
rm -rf app/cache/* && rm app/logs/prod.log
Then, try to browse a route of your application.
If you still have an error, open your log using cat app/logs/prod.log and find the last error.
If it's a php error caused by a vendor, remove your /vendor directory and run composer update
If you are not able to fix your problem, add to your question the error log and code of the method called by your route that is not working.
As chalasr said, cleaning prod cache manually works after the app.php setup.
I think a command like :
php app/console cache:clear --env=prod --no-debug
should work too.

How to permanently resolve Symfony2 twig_upper_filter error?

Situation:
Production mode
Change a file
One of the pages on the site returns the following 500 internal error.
Run composer update, and the error goes away.
Change a file and the problem returns.
The code calling the twig_upper_filter is buried deep inside the now embedded in symfony bootstrap templates.
What does composer update do that might fix this? It is repeatable (on one server only).
UndefinedFunctionException: "Attempted to call function
"twig_upper_filter" from the global namespace." at
Symfony 2.6.
Because at the end of composer update it does a cache clear, everytime you change something somewhere you need to clear the cache for the change to be visible in the production enviroment.
This is automatic on the development enviroment.
You need to run this from console:
cd /your/symfony/app
php ./app/console cache:clear --env=prod
Letting the web server build the cache resolved the problem. The command line environment must not be exactly the same as the web server php. On this server it is difficult to actually run command line scripts as the web server user.
Therefore, clearing the cache on the command line with no warmup is the work around:
php ./app/console cache:clear --no-warmup --env=prod

symfony 2, demo not working on remote server

I created fresh symfony 2 app which includes AcmeDemoBundle. It works fine.
I commented out in app_dev.php so that it can be accessed from remote server (openshift cloud). On localhost it works without any problem. I git pushed to openshift, and app_dev.php worked as expected.
Then I moved demo routes to route.yml (for production).
On localhost app.php worked without any problem. So I git pushed to openshift but then app.php threw an error:
failed to open stream Acme/DemoBundle/Resources/views/Welcome/index.html.twig
So, I put back demo routes to routes_dev.yml, git pushed, but openshift error persists.
What might be the problem?
EDIT: The problem is that on my localhost path to twig template is "/var/www/html/jba/php/src/JBA/MainBundle/Resources/views/Default/index.html.twig" but on openshift it still looks to the same directory. But openshift dir layout is different, so it can't find the template. I guess I have to configure openshift to look at right directory. Just don't know how.
Have you cleared the cache for the prod environment?
php app/console cache:clear --env=prod
You might also have a look at the server logs/ the sf2 logs within app/logs/prod.log if this won't help.
I issued the following commands before uploading, but somehow cache seems to be not cleared yet.
php /var/www/html/jba/php/app/console cache:clear --env=prod --no-debug
php /var/www/html/jba/php/app/console cache:clear
Only deleting prod and dev directories under app/cache explicitly helped.
See also
Symfony2: access same route in production as development

Symfony2 Composer Install

I am trying to install Symfony 2.1.3 (latest). I am running composer and installs everything okay. The only error that I get is:
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache
handling the post-install-cmd event terminated with an exception
[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command.
It's being installed under www folder. I am running nginx and followed the composer approach. I read on internet that apache should be run manually not as a service, however I am using nginx instead. Does apache still have any bearing on it? I'm using debian squeeze.
Edit: As per AdrienBrault's suggestion the error was because the timezone was not set in the php.ini. Only with --verbose I could see the warning. Thanks guys.
Apache is not related - PHP is called via command line.
Most likely is the permission in the cache folder: did you check if the user that runs the composer update can actually write the cache folder?
Try to manually run rm -Rf app/cache/dev (for production environment replace dev with prod) and see if you get any permission error.
Also you will get this error if the default.timezone setting is not configured in php when running in CLI. To verify just run
php --info | grep timezone
and check that the setting date.timezone is correctly configured.
On the security side, setting 777 to the folder is not the optimal solution - if you have ACL enabled you could use that to correctly set up the permission for the cache and logs folder. Read more at the Symfony2 official installation page
I had this same issue for a while and after hours of face to brick wall pounding I realized... I have a .gitmodule in my project, and on initial checkout these submodules are NOT initialized and as such are not there for your composer to update, which results in the above error.
Make sure you run the following
git submodule update --init src/Acme/Sadness/Bundle
of course replace src/Acme/Sadness/Bundle with YOUR project namespace.
Hope this helps someone not go through the same pain I just did.
If you have vendor folder already I would remove it and install symfony 2.1.3 again via "composer.phar install". Problem might be coming from outdated version of composer
I had the same problem and I resolve in this way.
execute this on the console
and you should see something like this
$ locate php.ini
/etc/php5/apache2/php.ini
/etc/php5/cli/php.ini
/etc/php5/fpm/php.ini
the first line is probably your php.ini that appear when you do a phpinfo();
the problem is that when you execute composer update this no check the same php.ini
in my case the second line
all my sites work fine but always I had problems not now
after edit the second file and put the same time zone that you set in the first one
run
$ sudo service apache2 reload
and now
$ composer update
I hope that this work for you like work for me
regards
Emiliano

Resources