Page 1 of 1

Apache / PHP Problem bei eGroupware Sync

Posted: 2009-11-13 10:31
by fulltilt
habe einen Kunden mit einer eGroupware Installation, wobei eGroupware an sich problemlos läuft.
Er möchte nun sein PDA (win mobile) mit Funambol syncen, hierbei klappt die Auth und der Login, beim syncen der Kontakte kommt es aber ständig zu einem Abbruch.
Auf dem Server läuft ispCP (stable) modsecurity2 habe ich für dieses Directory erst mal ganz rausgenommen, PHP läuft mit fcgid.
In den Logs finde ich openbase dir Fehler, die Folder /tmp /sync ... liegen wie vorgeschlagen oberhalb /htdocs.
Der openbase Pfad:
open_basedir = "/var/www/virtual/web.tld/:/usr/share/php/"
Wenn ich die syncml.php manuell aufrufe bekomme ich folgendes:

Code: Select all

Warning: require_once(Horde/SyncML.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/virtual/web.tld/htdocs/phpgwapi/inc/horde/Horde/RPC/syncml.php on line 3

Fatal error: require_once() [function.require]: Failed opening required 'Horde/SyncML.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/virtual/web.tld/htdocs/phpgwapi/inc/horde/Horde/RPC/syncml.php on line 3 
Kennt jemand eine Lösung?

Re: Apache / PHP Problem bei eGroupware Sync

Posted: 2009-11-13 11:03
by fulltilt
Habe jetzt das openbase so angepasst:

Code: Select all

open_basedir = "/var/www/virtual/web.tld/:/usr/share/php:/usr/share/php/PEAR:/var/www/virtual/web.tld/files:/var/www/virtual/web.tld/backups:/var/www/virtual/web.tld/tmp"
bekomme immer noch die gleiche Meldung:

Code: Select all

Failed opening required 'Horde/SyncML.php' (include_path='.:/usr/share/php:/usr/share/pear')
also hier liegt pear in /usr/share/php
bei der Fehlermeldung /usr/share/pear
Soll ich einen Link von /usr/share/php nach /usr/share/pear (existiert nicht) setzen ?
matzewe01 wrote:Entweder das open basedir richtig setzen oder das require entsprechend anpassen.

Re: Apache / PHP Problem bei eGroupware Sync

Posted: 2009-11-13 13:16
by Joe User
fulltilt wrote:Habe jetzt das openbase so angepasst:

Code: Select all

open_basedir = "/var/www/virtual/web.tld/:/usr/share/php:/usr/share/php/PEAR:/var/www/virtual/web.tld/files:/var/www/virtual/web.tld/backups:/var/www/virtual/web.tld/tmp"
Das muss ausreichen:

Code: Select all

open_basedir = "/var/www/virtual/web.tld:/usr/share/php"
fulltilt wrote:bekomme immer noch die gleiche Meldung:

Code: Select all

Failed opening required 'Horde/SyncML.php' (include_path='.:/usr/share/php:/usr/share/pear')
Existiert /usr/share/php/PEAR/Horde/SyncML.php denn? Darf der PHPuser auch darauf lesend zugreifen?
fulltilt wrote:also hier liegt pear in /usr/share/php
bei der Fehlermeldung /usr/share/pear
Lies die Fehlermeldung nochmal genauer.
fulltilt wrote:Soll ich einen Link von /usr/share/php nach /usr/share/pear (existiert nicht) setzen ?
Nein!

Re: Apache / PHP Problem bei eGroupware Sync

Posted: 2009-11-14 09:57
by fulltilt
Habe jetzt beides getestet einmal mit dem Link auf pear in /usr/share und auch mit dem Standard openbase Pfad.
Dieser sollte ja normalerweise auch die Folder /tmp, backup oberhalb /htdocs miteinschliessen, hierbei fängt er wieder an zu meckern über openbase restrictions:

Code: Select all

open_basedir = "/var/www/virtual/web.tld/:/usr/share/php/"
anscheinend muss ich jeden einzelen Ordner auch Subfolder eir /tmp/sync extra aufführen ...

Code: Select all

open_basedir = "/var/www/virtual/web.tld/:/usr/share/php:/var/www/virtual/web.tld/files:/var/www/virtual/web.tld/backups:/var/www/virtual/web.tld/tmp:/var/www/virtual/web.tld/tmp/sync"
Laut EGW soll beim Aufruf von:
http://web.tld/phpgwapi/inc/horde/Horde/RPC/syncml.php
keine Fehlermeldung erfolgen hier bekomme ich folgendes:

Code: Select all

od_fcgid: stderr: PHP Fatal error:  require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'Horde/SyncML.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/virtual/web.tld/htdocs/phpgwapi/inc/horde/Horde/RPC/syncml.php on line 3
also wieder include_path='.:/usr/share/php:/usr/share/pear
und in /usr/share/pear ist kein pear das wäre in /usr/share/php
aber auch mit der Verlinkung dorthin gleiche Fehlermeldung ...
in Zeile 3 syncml.php:
include_once 'Horde/SyncML/Command.php';
Command.php siehe ganz unten >
Existiert /usr/share/php/PEAR/Horde/SyncML.php denn? Darf der PHPuser auch darauf lesend zugreifen?
Nein - diese liegt im Web unter:
/var/www/virtual/web.tld/htdocs/phpgwapi/inc/horde/Horde/RPC/syncml.php

Habt Ihr noch eine Idee?
Gruss

comand.php

Code: Select all

<?php
include_once 'Horde/SyncML/State.php';
/**
 * The Horde_SyncML_Command class provides a super class fo SyncBody commands.
 *
 * $Horde: framework/SyncML/SyncML/Command.php,v 1.4 2004/07/03 15:26:46 chuck Exp $
 *
 * Copyright 2003-2004 Anthony Mills <amills@pyramid6.com>
 *
 * See the enclosed file COPYING for license information (LGPL). If you
 * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
 *
 * @author  Anthony Mills <amills@pyramid6.com>
 * @version $Revision: 18844 $
 * @since   Horde 3.0
 * @package Horde_SyncML
 */
class Horde_SyncML_Command {

    var $_cmdID;
    var $_xmlStack;
    var $_chars;
    function &factory($command, $params = null)
    {
        include_once 'Horde/SyncML/Command/' . $command . '.php';
        $class = 'Horde_SyncML_Command_' . $command;
        if (class_exists($class)) {
            return $cmd = &new $class($params);
        } else {
            Horde::logMessage('SyncML: Class definition of ' . $class . ' not found.', __FILE__, __LINE__, PEAR_LOG_ERR);
            require_once 'PEAR.php';
            return PEAR::raiseError('Class definition of ' . $class . ' not found.');
        }
    }

    function output($currentCmdID, $output)
    {
    }

    function startElement($uri, $localName, $attrs)
    {
        $this->_xmlStack++;
    }

    function endElement($uri, $element)
    {
        switch ($this->_xmlStack) {
        case 2:
            if ($element == 'CmdID') {
                $this->_cmdID = intval(trim($this->_chars));
            }
            break;
        }

        if (isset($this->_chars)) {
            unset($this->_chars);
        }

        $this->_xmlStack--;
    }

    function characters($str)
    {
    	$tempValue = trim($str);
    	
    	if(empty($tempValue)) return;
    	
        if (isset($this->_chars)) {
            $this->_chars = $this->_chars . $str;
        } else {
            $this->_chars = $str;
        }
    }

}


Re: Apache / PHP Problem bei eGroupware Sync

Posted: 2009-11-14 10:43
by Joe User
fulltilt wrote:
Joe User wrote: Existiert /usr/share/php/PEAR/Horde/SyncML.php denn? Darf der PHPuser auch darauf lesend zugreifen?
Nein - diese liegt im Web unter:
/var/www/virtual/web.tld/htdocs/phpgwapi/inc/horde/Horde/RPC/syncml.php
Das sind völlig verschiedene Pfade ("Horde/RPC" und "Horde") und Files ("SyncML.php" und "syncml.php"). Sicher das es kein Bug in der WebApp ist, oder Du "find" falsch gefüttert hast?
BTW: "/usr/share/pear" und "/usr/share/php" sind für Dein Problem vollkommen irrelevant, da hier "." zum Tragen kommt.

Re: Apache / PHP Problem bei eGroupware Sync

Posted: 2009-11-14 10:55
by fulltilt
hm - also ich denke auch das es mit pear nichts zu tun hat, sonst würde die Anwendung nicht funktionieren ...
von den openbase restrictions kommt jetzt auch nichts weiter, ich verwende hier die aktuellste Version von eGroupware, aber ich glaube langsam auch das hier ein Bug in der Anwendung ist.
Joe User wrote: Das sind völlig verschiedene Pfade ("Horde/RPC" und "Horde") und Files ("SyncML.php" und "syncml.php"). Sicher das es kein Bug in der WebApp ist, oder Du "find" falsch gefüttert hast?
BTW: "/usr/share/pear" und "/usr/share/php" sind für Dein Problem vollkommen irrelevant, da hier "." zum Tragen kommt.