![]() |
![]() |
||||
WordPress 3.0.5 installs quite smoothly on Tomcat using Quercus
for the PHP support, and runs fast!
However, we did run into a few problems at first which are covered below.
Getting Started
Known Issues
These are the problems we ran into when installing WordPress on Tomcat and how we solved them.
Known Issue - Admin page looks strange after a few clicks
After clicking a few things on the admin panel, suddenly the CSS went strange and it was impossible to work properly.
This is caused by WordPress compressing the CSS using GZip, even though it's already compressed at the Tomcat level. The double-compression causes the CSS to not download properly.
This can be fixed by changing a line in includes/script-loader.php but that's not very future-proof.
The best solution is to disable the setting via the database.
UPDATE wp_options SET option_value = 0 WHERE option_name = 'can_compress_scripts';
Known Issue - Installing Themes, Plugins and updates from the Admin Panel causes errors and corruption
If you've already done this, and now have a corrupted theme or plugin, simply delete it. WordPress notices it is gone, and goes back to the default theme.
The problem seems to be something to do with how the file downloads (perhaps because of Quercus).
Mail Exception
On our first installation, everything seems ok, but on another when approving a comment WordPress was trying to send an email and was crashing when using the "Mail" version of the mailer...
java.lang.ArrayIndexOutOfBoundsException: 64 com.caucho.util.CharBuffer.deleteCharAt(CharBuffer.java:472) com.caucho.quercus.lib.mail.MailModule.splitHeaders(MailModule.java:389) com.caucho.quercus.lib.mail.MailModule.mail(MailModule.java:76) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) com.caucho.quercus.module.StaticFunction.invoke(StaticFunction.java:135) com.caucho.quercus.env.JavaInvoker.callMethod(JavaInvoker.java:737) com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:643) com.caucho.quercus.expr.CallExpr.evalImpl(CallExpr.java:237) com.caucho.quercus.expr.CallExpr.evalCopy(CallExpr.java:164)
After some investigation, we put in a hack to change the method to SMTP, but then the headers were joined to the mail content and that resulted in empty emails being sent.
One more hack to add a CRLF, and all is good.
File changed: /wp-includes/class-phpmailer.php
Look for the line that says: /* Choose the mailer */, add review the changed lines below:
$this->Mailer = 'smtp'; // Added - Hack: Neale - Force SMTP /* Choose the mailer */ switch($this->Mailer) { case 'sendmail': $result = $this->SendmailSend($header, $body); break; case 'smtp': $result = $this->SmtpSend($header . chr(10) . chr(13), $body); // Added an extra CRLF here with chr(10) and chr(13) break; ...
If you have anything to add, please mail us or update the wiki.