Very new to Symfony so apologies if the answer is obvious. I am trying to add APC to a project to see if it improves performance. I am running symfony with easyphp on Windows 7/Windows 8 (installed on usb).
APC is installed in ext folder and added to php.ini file as:
extension=php_apc.dll
then at end of file:
[APC]
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 128M
apc.max_file_size = 5M
apc.stat = 1
php works fine with these settings. However when I now try to load my Symfony project I get the following error:
FatalErrorException: Compile Error: Cannot redeclare class
Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain in
F:\EasyPHP\data\localweb\projects\SymfonyProj\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain.php line 36
Not sure if I have my caching set up all wrong or I am missing some config options somewhere?
Related
I'm using Symfony 2 and working with wamp server. After some time, i cannot access my pages anymore with that exception always showing, can't figuring why.
Here's the full stack trace :
in DebugClassLoader.php line 203
at DebugClassLoader->loadClass('Symfony\\Component\\HttpFoundation\\ParameterBag')
at spl_autoload_call('Symfony\\Component\\HttpFoundation\\ParameterBag') in Request.php line 240
at Request->initialize(array(), array(), array(), array(), array(), array([...]), null) in Request.php line 222
at Request->__construct(array(), array(), array(), array(), array(), array([...]), null) in Request.php line 1964
at Request::createRequestFromFactory(array(), array(), array(), array(), array(), array([...])) in Request.php line 281
at Request::createFromGlobals() in app_dev.php line 27
It seems the "DebugClassLoader" class is using reflection to analyze what's wrong and it throws an exception when getting to the ParameterBag class. A var_dump() shows that ParameterBag is implementing \IteratorAggregate and \Countable as expected but also some random class "o" which i can't figure where it comes from.
Prod environment will be an apache server running on a debian, maybe it will work on it but I'd better fix this on my current environment before going live.
All the code I have which may deal with ParameterBag is something like that :
$session = $request->getSession();
$session_id = $session->getId();
$webclient = $em->getRepository('AppBundle\Entity\WebClient')
->findOneBy(array("session_id" => $session_id));
...
Also note that clearing the cache does not fix this issue. (using php bin/console cache:clear [--env=dev])
PS: restarting apache fixes it, but it shows again later
I had that problem (not on ParameterBag but same exception in the same file), it was caused by a corrupted installation of APC. Try putting this line in your php.ini :
apc.cache_by_default = 0
In the [APC] block. If the error is gone for good, consider removing and reinstalling APC.
APC was not enabled. I tried to find if any other cache was installed to disable them but there was not. It still occurs on my dev environment.
However it does not seem to happen on my prod environment. I'll probably work with it.
If you while debugging try to clear server cache. You will face some error like:
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 2444952 bytes) in C:\xampp\htdocs\project_name\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand.php on line 163
so to solve this issue you need to add below line in your php.ini and restart apache.
apc.cache_by_default = 0
Now see the magic. It will work fine.
thanks,
Anirudh Sood.
Update PHP version and restart the apache server.
To quote:
Currently, there are three supported versions of PHP i.e Versions 5.6, 7.0, 7.1and 7.2. As a modern-day web developer who works on different frameworks, packages need to have the multiple versions of PHP installed on your VPS.
During your development, not all your projects may support the latest version (V. 7.2) resulting you to downgrade to a much earlier version. In this tutorial, we will illustrate how to switch between the different versions of PHP from 7.2 to 7.0 to enable you to run your projects smoothly.
I upgrade my moodle from 2.6.4 to 2.7.1. After upgrading I've got blank (white) screen. Then I turn on debug display in config.php
$CFG->debug = 32767;
$CFG->debugdisplay = true;
After that I receive an error: Fatal error: Cannot redeclare class condition_info in /home/moodle/public_html/lib/conditionlib.php on line 105.
Then I search and found that might be a problem with opcache (https://tracker.moodle.org/browse/MDL-45797). So I follow this doc - http://docs.moodle.org/27/en/admin/environment/php_setting/opcache.enable and enable opcache in php.ini:
[opcache]
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
; Required for Moodle
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0
; If something does not work in Moodle
;opcache.revalidate_path = 1 ; May fix problems with include paths
;opcache.mmap_base = 0x20000000 ; (Windows only) fix OPcache crashes with event id 487
; Experimental for Moodle 2.6 and later
;opcache.fast_shutdown = 1
;opcache.enable_cli = 1 ; Speeds up CLI cron
;opcache.load_comments = 0 ; May lower memory use, might not be compatible with add-ons and other apps.
Reload apache and it still doesn't work. I also try to comment out part ; If something does not work in Moodle and error still occurs. Any idea what might be wrong?
I also read that might be a problem with themes. Before I upgrade I switch theme to Clean which is default theme in 2.7.
I have ubuntu 14.04 with PHP 5.5.9-1ubuntu4.3 (cli) (built: Jul 7 2014 16:36:58)
This might be a bug or an incompatibility with the opcache system.
i would suggest to turn the opcache off: opcache.enable = 0. The opcache is only good, if everything works and you want to gain some additional performance.
restart PHP
restart Apache
Finally try one of these downloads:
2.7 - https://github.com/moodle/moodle/archive/v2.7.1.tar.gz
master [latest] - https://github.com/moodle/moodle/archive/master.zip
If the problem persists: please open a new bug report over at moodle and reference the report you found. it is clearly related.
I have installed Symfony 2 and I have activated the opcache (ZendOPtimizer) extension and when I intent to generate the cache of a web page O've got this error :
Warning: filemtime(): stat failed for C:/Apache24/htdocs/symfony/app/cache/dev/annotations/Acme-DemoBundle-Controller-SecuredController.cache.php in C:\Apache24\htdocs\symfony\vendor\doctrine\common\lib\Doctrine\Common\Annotations\FileCacheReader.php line 97
This is my opcache config :
zend_extension="c:\php\ext\php_opcache.dll"
opcache.enable=1
opcache.use_cwd=0
opcache.validate_timestamps=0 ; file stat
opcache.revalidate_freq=2 ; seconds
opcache.revalidate_path=0
opcache.save_comments=0
opcache.load_comments=0
opcache.dups_fix=0
opcache.inherited_hack=0
opcache.log_verbosity_level=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.enable_file_override=1
opcache.max_wasted_percentage=5 ; percent waste until restart
opcache.consistency_checks=0
opcache.force_restart_timeout=180
opcache.blacklist_filename=paypal.php
opcache.fast_shutdown=1
opcache.optimization_level=0xffffffff
opcache.enable_slow_optimizations=1
opcache.max_file_size=0
When I disable this extension, the generation of the cache works
Versions :
Symfony 2.3.3
PHP 5.5
Apache 2.4.6 For Windows
I had exactly the same problem on my Mac, using the homebrew php55 version.
As mentioned in the Optimizer documentation, the option opcache.enable_file_override=1 may break some frameworks. It seems that is the case for Symfony2. Switching the value to 0 solved the problem.
1 - Make sure you have disabled APC or it'll create conflicts.
2 - Make sure you've restarted apache entirely after activating opcache.
Some basic information:
Linux: 2.6.32 (64bit)
PHP: 5.4.15
Apache: 2.4.4
MySQL: 5.6.11
APC: 3.1.9
Wordpress: 3.5.1, with Woocommerce(2.0.10)
The problem is, when I enable APC, the following errors occur:
Warning: register_shutdown_function(): Invalid shutdown callback 'wpdb::__destruct' passed in /usr/local/httpd/htdocs/wp-includes/wp-db.php on line 537
Fatal error: Call to undefined method wpdb::init_charset() in /usr/local/httpd/htdocs/wp-includes/wp-db.php on line 542
Here is my APC config in php.ini:
[APC]
; Reference: http://www.php.net/manual/en/apc.configuration.php
extension=apc.so
apc.enabled=1
apc.shm_segments=1
; 32MB per Wordpess install. Ref: http://gregrickaby.com/the-perfect-apc-configuration/
apc.shm_size=320M
;Relative to the number of cached files (you may need to watch your stats for a day or two to find out a good number)
apc.num_files_hint=10000
;Relative to the size of WordPress
apc.user_entries_hint=10000
;The number of seconds a cache entry is allowed to idle in a slot before APC dumps the cache
apc.ttl=7200
apc.user_ttl=7200
apc.gc_ttl=3600
;Setting this to 0 will give you the best performance, as APC will
;not have to check the IO for changes. However, you must clear
;the APC cache to recompile already cached files. If you are still
;developing, updating your site daily in WP-ADMIN, and running W3TC
;set this to 1
apc.stat=1
;This MUST be 0, WP can have errors otherwise!
apc.include_once_override=0
;Only set to 1 while debugging
apc.enable_cli=0
;Allow 2 seconds after a file is created before it is cached to prevent users from seeing half-written/weird pages
apc.file_update_protection=2
;Leave at 2M or lower. WordPress does't have any file sizes close to 2M
apc.max_file_size=2M
;Ignore files
apc.filters = "/usr/local/httpd/htdocs/apc.php,/usr/local/httpd/htdocs/phpinfo.php,wp-cache-config"
apc.cache_by_default=1
apc.use_request_time=1
apc.slam_defense=0
;apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.stat_ctime=1
apc.canonicalize=1
apc.write_lock=1
apc.report_autofilter=0
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600
apc.lazy_classes=0
apc.lazy_functions=0
apc.file_md5=0
Here are some combination of what I tried:
apc.stat = 0, apc.stat_ctime=0
apc.stat = 1, apc.stat_ctime=1
apc.stat = 0, apc.stat_ctime=1
apc.stat = 0, apc.stat_ctime=0
However, APC still cannot be used. Only when I disable APC, the site works properly.
Can anyone please tell me what is the problem?
Thank you in advance.
APC config in image
Probably APC does not interpret that syntaxis of register_shutdown_function correctly. There are two ways of defining static method callbacks with this function:
register_shutdown_function('someClass::someMethod');
register_shutdown_function(array('someClass', 'someMethod'));
You could refer to the documantation and commetns for more information: http://php.net/manual/en/function.register-shutdown-function.php
Wordpress also worked for me when I disabled apc from php.ini
I've been tying to follow this guide for integrating Doctrine 2 and CI 2.
all was good until i ran "php doctrine-cli.php orm:generate-proxies" from a cmd,
and got this error Fatal error: Call to undefined function Doctrine\Common\Cache\apc_fetch().
after some research it looks like I don't have the AlternativePhpCache (ACP) module installed.
so i've tried every single version in downloads.php.net/pierre and they all yield the same error
https://lh3.googleusercontent.com/-QEt3udKTSGc/Tlkgr5POw4I/AAAAAAAAEwQ/hlAhmcxshDE/123.jpg
(screenshot from my picasa as i can't upload images due to a lack of points)
I'm using :
Win7 (x64)
EasyPhp 5.3.5.0
am I doing something wrong?
Thanks.
I had the same problem with Xammp. I made a search on google and found http://downloads.php.net/pierre/ web site. According to my operating system specification and PHP version I chose the suitable file which was php_apc-20110109-5.3-vc9-x86.zip (2011-01-09 12:16 -0800) for me and downloaded it. I extracted the file to my Xammp/php/ext folder as php_apc.dll. After all, I edited my php.ini file and add extension=php_apc.dll to extension section in php.ini. If you need you can add the following configuration.
[APC]
- apc.enabled = 1
- apc.shm_segments = 1
- apc.shm_size = 64
- apc.max_file_size = 16M
- apc.stat = 1
That worked out for me. If this is not going to work for you, then you may check your operating system(especially x86 or x64) and php version (5.2.* or 5.3.*). I hope this information will help you. Have a great day guys.