From: Seaman, G. <Gra...@rh...> - 2011-05-19 10:59:23
|
Replying to self in the hope it may be useful to others: Inserting the line in index.php register_shutdown_function('session_write_close'); immediately before requiring the session handler, seems to fix the problem with APC. Since this is the result of trawling the web and not of any deep understanding on my part, I can't guarantee this won't have sideffects (I'll report back if I find any), or that it will always work. Graham ________________________________ From: Seaman, Graham [mailto:Gra...@rh...] Sent: 19 May 2011 11:30 To: vuf...@li... Subject: [VuFind-Tech] Problems with spl_autoload() - no, it was APC I just ran into exactly the same symptoms installing Vufind on our production server, which has APC enabled. I don't run this server myself and can't experiment easily with it, so thought I should ask on the list before asking the sysadmins to drop APC and switch to Memcached or similar - what cacheing systems do people use? I'm running off a modified version of trunk, so it would be good to know what works with recent versions of vufind. Thanks Graham ________________________________ From: Demian Katz [mailto:dem...@vi...] Sent: 16 November 2010 14:22 To: S.J...@ke... Cc: vuf...@li... Subject: Re: [VuFind-Tech] Problems with spl_autoload() - no, it was APC Glad to hear you found a workaround... and good luck figuring out a full solution! If you do work out the specifics of the problem, it would be great if you could add some notes to the wiki page about PHP acceleration: http://vufind.org/wiki/performance#php_tuning Right now there's a throwaway comment about APC there, but I've never had time to investigate deeply enough to flesh out that part of the documentation. - Demian From: Stewart J Brownrigg [mailto:S.J...@ke...] Sent: Tuesday, November 16, 2010 9:06 AM To: Demian Katz Cc: vuf...@li... Subject: RE: Problems with spl_autoload() - no, it was APC Hi Demian, We managed to find a workaround for this problem. We had APC enabled on the server that we are building, but not on our development box. The code worked fine until we wanted to implement it. It was only after my colleague tracked the problem to APC, with which he has had mixed experience, that I found your own email from Sept 21, 2009 advising to take care with it. We don't know yet if it is our own customisations or a combination of specific versions that are causing the problems. Until we have the time to investigate we are switching off APC as a workaround. Thank you for your time helping. Stewart -- Stewart J Brownrigg, Library Systems Officer S20 Cornwallis South, University of Kent, Canterbury, Kent, CT2 7NF, UK +44(0)1227 823621 (824243 fax); S.J...@ke... From: Demian Katz [mailto:dem...@vi...] Sent: 11 November 2010 17:43 To: S.J...@ke...; vuf...@li... Subject: RE: Problems with spl_autoload() I still don't understand why the autoloader should be triggering... but maybe if we work with it, we can find out more. Presumably the autoloader expects a file called web/Session.php. What happens if you create a web/Session.php file like this? <?php require_once 'services/MyResearch/lib/Session.php'; ?> Presumably that will allow the autoloader to find what it is working for and things just might start working. I don't propose this as a long-term solution, but I'd be interested to see if it helps! Assuming that this does fix everything, you might be able to get further clues by adding this line to the top of your new Session.php file: var_dump(debug_backtrace()); That should show the full sequence of events that led to the file being auto-loaded... it might be informative. - Demian From: Stewart J Brownrigg [mailto:S.J...@ke...] Sent: Thursday, November 11, 2010 12:36 PM To: Demian Katz; vuf...@li... Subject: RE: Problems with spl_autoload() Hi Demian, Thank you for your reply. web/services/MyResearch/lib/Session.php file does indeed exist. I tried putting in the var_dump code at the top of the MySQLSession.php as you suggested with these results: Before the require_once: <quote> Warning: require(Session.php) [function.require]: failed to open stream: No such file or directory in /www/wwwroot/vufind/web/index.php on line 43 Fatal error: require() [function.require]: Failed opening required 'Session.php' (include_path='.:/usr/local/lib/php:/www/wwwroot/Smarty/libs') in /www/wwwroot/vufind/web/index.php on line 43 </quote> (Renaming class Session to MySession produces the same output as this) After the require_once: <quote> bool(true) </quote> I'm afraid that the clues are not appearing yet. Stewart -- Stewart J Brownrigg, Library Systems Officer S20 Cornwallis South, University of Kent, Canterbury, Kent, CT2 7NF, UK +44(0)1227 823621 (824243 fax); S.J...@ke... From: Demian Katz [mailto:dem...@vi...] Sent: 11 November 2010 16:18 To: Stewart Brownrigg; vuf...@li... Subject: RE: Problems with spl_autoload() That's very strange - I haven't seen this problem before. It seems that PHP is trying (and failing) to auto-load the Session class. However, it shouldn't have to autoload anything, because the require statements at the top of the MySQLSession.php file should explicitly bring in the Session class definition from web/services/MyResearch/lib/Session.php. Does the web/services/MyResearch/lib/Session.php file exist? (I can't imagine it wouldn't... but doesn't hurt as a sanity check). Does it help if you rename the Session class to something like MySession? I'm not aware of any reason why Session would suddenly become a reserved word, but it's another sanity check. Might also be interesting to put in "var_dump(class_exists('Session'));" both before and after the require_once line for Session.php to see if that tells you anything. Sorry I don't have a better answer - but if you turn up any clues by trying these things, or if you need other ideas, let me know! - Demian From: Stewart Brownrigg [mailto:S.J...@ke...] Sent: Thursday, November 11, 2010 10:01 AM To: vuf...@li... Subject: [VuFind-Tech] Problems with spl_autoload() Hi, Fatal error: spl_autoload() [<a href='function.spl-autoload'>function.spl-autoload</a>]: Class Session could not be loaded in /www/wwwroot/vufind/web/sys/MySQLSession.php on line 32 I am getting this error showing up on a fresh VuFind-1.0.1 installation. The theme is set to default, and the driver to sample. php 5.3.2 on a Solaris platform Most data appears to be getting written to the database, except session.data. This appears to be crippling user sessions, etc. Any thoughts? Thanks, Stewart -- Stewart J Brownrigg, Library Systems Officer S20 Cornwallis South, University of Kent, Canterbury, Kent, CT2 7NF, UK +44(0)1227 823621 (824243 fax); S.J...@ke... |