Tuesday, December 30, 2014

eAccelerator Causes PHP Include to Fail in Wordpress

SERVER: Linux CENTOS 6
PLESK 10.4.4



I have been installing Wordpress on many subdomains on our dedicated server. All of them run CRON jobs every 10 minutes.



Long story short, the time to load first byte was getting to over 10 seconds.



I did some research and found that eAccelerator helps with speed issues for PHP-intensive websites and another website that gives some instruction on how to do this.




http://imanpage.com/code/how-install-yum-zend-optimizer-eaccelerator-and-apc



After installing the Atomic repo and doing a YUM update I installed eAccelerator like this:



yum install php-eaccelerator.x86_64


I checked the PHP version after the install and found this:



PHP 5.3.14 (cli) (built: Jun 14 2012 16:34:56)

Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with eAccelerator v0.9.6-svn358-dev, Copyright (c) 2004-2007 eAccelerator, by eAccelerator
with the ionCube PHP Loader v4.0.10, Copyright (c) 2002-2011, by ionCube Ltd.


So I was like...YAY, that was easy.



THEN I started noticing ALL the PROBLEMS.




First, a few of my MYSQL tables crashed and had to be repaired. The only way to get the REPAIR to work in PHPMyAdmin was to first login through SCP and change the owner of the actual database files to MYSQL, from it being blank. After this the repair worked and the tables are fine.



Next, A job I am running which connects to an external MYSQL server suddenly stopped working with a pasword authentication error. I changed the connect string from DBHOST to the actual IP:port and now the CRON reports:



PHP Warning:  mysql_connect(): Lost connection to MySQL server at 'reading initial communication packet', system error: 111 in /usr/local/bin/video-queue.php on line 230


FINALLY, and the reason why I did this in the first place was that all my Wordpress installs after working FINE for a long time suddenly stopped being able to call a CLASS that I know gets included (because it worked fine before). So now I get this:



Fatal error: Class 'PPT_Widgets_ARTICLES2' not found in /var/www/vhosts/md1network.com/albany/wp-includes/widgets.php on line 324



That particular class is located in another directory, but it is there. Another piece of information is that the file that contains the CLASS were placed there by EXTRACTing a zipped file (via Plesk) by using PHP unzip. This unfortunately screwed up the owner and permissions, but the sites were ok.



I noticed that the YUM update rewrote my PHP.ini file so I thought it screwed up the include path. I still don't know if that is the case.



I have tried altering the owner and permissions on the file where the CLASS is and the widgets.php file also. None of these worked and it still thinks the CLASS doesn't exist. As a matter of fact, any time you include wp-config.php (which DEFINEs the MYSQL db, user, and password, it throws the same error about that stupid class (which I wrote and was working fine so it can't be all that stupid).



Before this the only mods to the server were the installation of FFMPEG and PHP TIDY.




ALSO...ANOTHER STRANGE THING is that all the CRON jobs are running FLAWLESSLY and they use the same INCLUDE of wp-config.php.



It's like the problem is isolated when PHP tries to run from the browser (eAccelerator?)



I have another Wordpress site that is running fine on the same server after I repaired a few of its tables. The sites that are having a problem do not have any corrupt tables.



I hope thats enough information.



PLEASE HELP.
Rick

No comments:

Post a Comment

linux - How to SSH to ec2 instance in VPC private subnet via NAT server

I have created a VPC in aws with a public subnet and a private subnet. The private subnet does not have direct access to external network. S...