Troubleshooting CKFinder

This website contains links to software which is either no longer maintained or will be supported only until the end of 2019 (CKFinder 2). For the latest documentation about current CKSource projects, including software like CKEditor 4/CKEditor 5, CKFinder 3, Cloud Services, Letters, Accessibility Checker, please visit the new documentation website.

If you look for an information about very old versions of CKEditor, FCKeditor and CKFinder check also the CKEditor forum, which was closed in 2015. If not, please head to StackOverflow for support.

(Empty Error Messages and Support and Help sections added)
Line 47: Line 47:
 
[[Image: CKFinder_Java_nonempty_error.png|frame|center|An empty CKFinder error message window]]
 
[[Image: CKFinder_Java_nonempty_error.png|frame|center|An empty CKFinder error message window]]
  
 +
 +
==Flash Upload Problem==
 +
 +
As of CKFinder 2.1 we have introduced new Flash component for multiple file upload. It is working great except in one situation. When, in CKFinder, you use your own authentication method (you have overridden <code>checkAuthentication()</code> method), based on some variable placed in a session scope, you might see the following error, in browsers other than IE, while trying to upload images:  ''"The file browser is disabled for security reasons. Please contact your system administrator and check the CKFinder configuration file"''.
 +
 +
[[Image:  CKFinder_Java_Flash_upload.png|frame|center|CKFinder Flash Upload Problem]]
 +
 +
 +
This is happening because of some old Flash "cookie bug". If you are interested in seeing reports on this issue you can follow the below links  (login is required):
 +
* http://bugs.adobe.com/jira/browse/FP-1044
 +
* https://bugs.adobe.com/jira/browse/FP-201
 +
* http://bugs.adobe.com/jira/browse/FP-78
 +
 +
Now to give you some basic view on the problem. As you probably know browser has cookie space which is used to store cookies which are used to communicate with server. When Flash component (embedded in to web page) is being initialized it creates it’s own separate cookie space in non-IE browsers from which unfortunately wrong or no cookies are sent.
 +
If the correct cookies are not sent, than, as you already know, sessions and cookie based authentication will not work.
 +
 +
To workaround this problem we have created <code>FileUploadFilter</code> which  retrieves appropriate cookies on server side. So if you are using flash upload component together with session scope variables to identify your user, make sure this Filter is included in your application config file. Also note that its mapping should be set to the same url pattern as for <code>ConnectorServlet</code>.
 +
 +
To use the filter you have to declare it in <code>web.xml</code> file for your application. For more details on configuration please refer to Integration, [[http://docs.cksource.com/CKFinder_2.x/Developers_Guide/Java/Integration#File_Upload_Filter File Upload Filter]] section.
  
 
== Support and Help ==
 
== Support and Help ==
 
If you encounter other issues with CKFinder for Java, you can find support on the [http://cksource.com/forums community forum]. Use the [http://cksource.com/contact contact form] from our website to send your questions and comments.
 
If you encounter other issues with CKFinder for Java, you can find support on the [http://cksource.com/forums community forum]. Use the [http://cksource.com/contact contact form] from our website to send your questions and comments.

Revision as of 17:16, 9 September 2011

This article describes some measures that can be taken in case of problems with the CKFinder for Java application.

Debugging CKFinder

CKFinder for Java contains a special debugging mode that makes it easier to troubleshoot the application. This mode can be turned on in the WEB-INF/web.xml file, by setting a new <init-param>debug</init-param> node to true.

<servlet>
	<servlet-name>ConnectorServlet</servlet-name>
	<servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class>
	<init-param>
		<param-name>XMLConfig</param-name>
		<param-value>/WEB-INF/config.xml</param-value>
	</init-param>
	<init-param>
		<param-name>debug</param-name>
		<param-value>true</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>

For more information on the web.xml file refer to the Integration article.

With the debugging mode on, CKFinder returns detailed exception information when an error occurs.

important note
The debugging mode should not be turned on by default on a production server and should only be used to diagnose a problem when CKFinder does not work as expected.


Empty Error Messages

Under some circumstances right after installing CKFinder you may get errors about incorrect configuration of the application. In rare cases (usually because of your custom web application settings) it may happen that you will not see any message text either in the dialog window or in your log files.

An empty CKFinder error message window


Here is what you can do to fix it:

  1. Clear Tomcat log files. This step is not obligatory, but if you do not want to go through hundreds of log files that you probably have in your Tomcat, you can clear them. In this way it will be easier for you to find an exception you are interested in.
  2. Deploy the CKFinderJava-x.y.war file (x.y is the version number) on your Apache Tomcat server.
  3. Turn on debugging mode in the CKFinderJava application. In order to achieve this, go to the WEB-INF/web.xml file and set the <init-param>debug</init-param> node to true. See the section above for a more detailed description of the debugging mode.
  4. Start and stop your Apache Tomcat server. This will create a CKFinderJava context file which represents a web application that is run within a particular virtual host. You can find more information about application context here: http://tomcat.apache.org/tomcat-7.0-doc/config/context.html.
  5. If you are using a default Apache Tomcat configuration, your virtual host is localhost and your application context should be placed under {CATALINA_HOME}/conf/Catalina/localhost. The context file has the same name as your application and has an .xml extension. In our default case it will be CKFinderJava-x.y.xml.
  6. Open the context file, find the Context node and add the swallowOutput attribute with its value set to true. The node should look like this: <Context antiJARLocking="true" path="/CKFinderJava" swallowOutput="true" />. This attribute will redirect all errors to the web application logger.
  7. Now start your application again and repeat the steps to return an error. A detailed stacktrace should be visible in the CKFinder dialog window as well as in Tomcat log files.
An empty CKFinder error message window


Flash Upload Problem

As of CKFinder 2.1 we have introduced new Flash component for multiple file upload. It is working great except in one situation. When, in CKFinder, you use your own authentication method (you have overridden checkAuthentication() method), based on some variable placed in a session scope, you might see the following error, in browsers other than IE, while trying to upload images: "The file browser is disabled for security reasons. Please contact your system administrator and check the CKFinder configuration file".

CKFinder Flash Upload Problem


This is happening because of some old Flash "cookie bug". If you are interested in seeing reports on this issue you can follow the below links (login is required):

Now to give you some basic view on the problem. As you probably know browser has cookie space which is used to store cookies which are used to communicate with server. When Flash component (embedded in to web page) is being initialized it creates it’s own separate cookie space in non-IE browsers from which unfortunately wrong or no cookies are sent. If the correct cookies are not sent, than, as you already know, sessions and cookie based authentication will not work.

To workaround this problem we have created FileUploadFilter which retrieves appropriate cookies on server side. So if you are using flash upload component together with session scope variables to identify your user, make sure this Filter is included in your application config file. Also note that its mapping should be set to the same url pattern as for ConnectorServlet.

To use the filter you have to declare it in web.xml file for your application. For more details on configuration please refer to Integration, [File Upload Filter] section.

Support and Help

If you encounter other issues with CKFinder for Java, you can find support on the community forum. Use the contact form from our website to send your questions and comments.