Danke, Leute, ich hab den Fehler gefunden!
Es war doch ein bisschen anders als zunaechst gedacht:
Der Tipp mit der Ausgabe von stderr war super. So habe ich herausgefunden, dass die Datei 'libCore.so' nicht gefunden werden konnte. Diese ist, wie ich dann gemerkt habe, Bestandteil des Programms ROOT, das ich in mein C++-Programm eingebunden hatte. Mir war dann schnell klar, dass die Umgebungsaviablen falsch gesetzt sein muessen. ROOT braucht naemlich einen Eintrag mit seinem lib-Verzeichnis in der env var $LD_LIBRARY_PATH. Dieser war aber nicht vorhanden, wie durch
PHP-Code:
passthru("echo $LD_LIBRARY_PATH");
herauszufinden war. Also habe ich noch ein bisschen gesucht, wo denn die Variablen gesetzt werden muessen. Nach einiger Zeit stiess ich auf die Datei /etc/apache2/envvars und habe dort mit
Code:
...
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ROOTSYS/lib
...
die noetige(n) Variable(n) gesetzt. Nach Neustart von apache2 hat's funktioniert!
Mich wundert nur, warum ich letzte Woche nicht den Fehler mit der 'libCore.so' an der Shell bekommen habe. Der kam nun naemlich auch an der Shell, wenn ich als Benutzer www-data eingeloggt war. Irgendwie muessen die Env Vars da noch exportiert worden sein, denn an der Shell konnte ich das Programm ausfuehren, aber mit PHP wiederum nicht.
Jetzt ist es genau umgekehrt: Mit PHP geht's, an der Shell aber nicht. Irgendwie muss es einen Unterschied geben zwischen dem User www-data, der von Apache benutzt wird, und dem User www-data, der an der Shell eingeloggt ist. Ist auch irgendwie klar, dass man nicht die Env Vars aus /etc/apache2/envvars bekommt, wenn man sich in die Bash einloggt.
Naja, ich hoffe, es klappt jetzt einwandfrei.
LG