Warning FCKeditor - 6.x-2.0

Al actualizar el módulo fckeditor de Drupal a la versión 6.x-2.0 vemos el siguiente mensaje:

 

  1. warning: file_exists(): open_basedir restriction in effect. File(/fckstyles.xml) is not within the allowed path(s): (/srv/www/vhosts/xxxxxxx/httpdocs:/tmp) in /srv/www/vhosts/xxxxxxx/httpdocs/sites/all/modules/fckeditor/fckeditor.module on line 786.

El problema nos da la pista de la línea 786 del archivo fckeditor.module; bien en esta línea tenemos

 

  1. if (file_exists($themepath .'fckstyles.xml')) {

Si trazamos el código podremos observar que la variable $themepath está vacía y por ello tenemos el error.

Bien, entonces, sigamos tirando de nuestra pista, ¿dónde se define el valor de la variable $themepath? En la línea 521, donde la función fckeditor_path_to_theme() "debe" traer su valor, sin embargo, no es así, he aquí el origen del problema.

Analizando esta función (sobre la línea 1134 del archivo fckeditor.module) podemos comprobar que si el bucle if que contiene falla, estaremos devolviendo un valor de $themepath vacío.
 

En el blog oficial de drupal.org podemos encontrar una solución que consiste en sustituir la funcion fckeditor_path_to_theme() por esta que solventa la situación con otro bucle if adicional:

  1. function fckeditor_path_to_theme() {
  2.  
  3. global $theme_key;
  4.  
  5. static $themepath;
  6.  
  7. if(empty($themepath) && !empty($theme_key)) {
  8.  
  9. $themepath = drupal_get_path('theme', $theme_key);
  10.  
  11. }
  12.  
  13. // fall back
  14.  
  15. if(empty($themepath)) {
  16.  
  17. return path_to_theme();
  18.  
  19. }
  20. return $themepath;
  21.  
  22. }

Otra solución si no queremos tocar el código del módulo fckeditor consiste en actualiazarse a la versión 6.x-2.1 de dicho módulo que ya viene con este parche incorporado.

Espero que os sea de ayuda, a mi me ha sido muy util esta solución y por ello la comparto con vosotros! No he vuelto a saber nada más de ese warning!