0 votes
ago in SoSci Survey (dt.) by s361067 (120 points)

Liebes Support-Team,

ich bin gerade in der finalen Testphase unseres Befragungsprojektes. Seit kurzem tritt relativ am Anfang der Befragung die folgende Fehlermeldung auf:

"Diese Seite funktioniert nicht
umfragenup.uni-potsdam.de kann diese Anfrage momentan nicht verarbeiten.
HTTP ERROR 500".

Ich war heute und gestern mit unserem IT-Team im Kontakt. Wir haben Uni-seitig keinen Fehler gefunden, und in der Programmierung habe ich seit dem letzten erfolgreichen Testdurchlauf auch nichts geändert.

Welche Infos benötigen Sie von mir, um eine Lösung zu finden? Von unserem IT-Team habe ich eine detaillierte Fehlermeldung erhalten, benötigen Sie die?

Vielen Dank!

1 Answer

0 votes
ago by SoSci Survey (370k points)

Es gibt unterschiedliche Ursachen, welche zu diesem Fehler führen können. Übersetzt in normale Sprache besagt er nur: Der Webserver hat von dem PHP-Prozess keine Daten erhalten.

Eine Möglichkeit ist, dass in SoSci Survey ein Fehler aufgetreten ist. Um das zu prüfen, müssten Sie den Zeitpunkt des Aufruf an Ihr IT-Team mitteilen und dieses müsste in der SoSci-Survey-Administration unter Server-Wartung -> Fehler-Aufzeichnung nahsehen, ob passende zu dieser Zeit entweder im Karteireiter "SoSci" oder "PHP" ein Fehler auftaucht.

Eine andere Möglichkeit ist, dass der PHP-Prozess instabil läuft. In diesem Fall ist es unter Umständen erforderlich, den PHP-Prozess oder den Server neu zu starten. Wenn das Problem aber spezifisch in Ihrer Befragung auftaucht, dann ist die erste Erklärung wahrscheinlicher.

Welchen PHP-Code verwenden Sie denn auf der Seite, auf welcher das Problem auftritt?

in der Programmierung habe ich seit dem letzten erfolgreichen Testdurchlauf auch nichts geändert.

Womöglich wurde auf dem Server eine neue Version von SoSci Survey installiert, welche mit Ihrem Fragebogen nicht zurecht kommt, oder es wurde eine PHP-Aktualisierung eingespielt, welche mit der Kombination aus SoSci Survey und dem Fragebogen nicht zurecht kommt.

Bitte prüfen Sie doch in SoSci Survey einmal, welche Versionsnummer links unten angezeigt wird. Falls das nicht 3.8.04 ist, bitten Sie Ihre IT um ein Update von SoSci Survey.

ago by s361067 (120 points)
Bei uns läuft die Version 3.8.03 (habe der IT geschrieben). Zwischen dem erfolgreichen Testlauf und der Fehlermeldung wurde kein Update durchgeführt. Die PHP-Version ist 8.4.

Im Fehlerprotokoll von heute Vormittag steht:

[14-Apr-2026 10:21:59 Europe/Berlin] Notice: Redirecting from [surveyup.uni-potsdam.de ] to [umfragenup.uni-potsdam.de ]
2026-04-14 10:32:57 +0200    Error: Warning: An error occured during PHP-code evaluation: 4: strlen(): Argument #1 ($string) must be of type string, array given in [...]/inc/InterviewCase.php on line 2261
- called s2survey\debugging\Debugger::callStack((integer)-1) in s2survey/sosci/SoSciLogfile.php on line 95
- called s2survey\sosci\SoSciLogfile::logError('Warning: An error occured dur...') in s2survey/phpcode/PHPCodeExecutor.php on line 144
- called s2survey\phpcode\PHPCodeExecutor::sa((array), (NULL), '') in s2survey/phpcode/PHPCodeExecutor.php on line 136
- called s2survey\phpcode\PHPCodeExecutor::htmlErrorMessages((array), '', (NULL)) in inc/QuestionnairePHP.php on line 291
- called QuestionnairePHP::sc((array), '', (NULL)) in inc/QuestionnairePHP.php on line 286
- called QuestionnairePHP::nb('') in inc/QuestionnairePHP.php on line 231
- called QuestionnairePHP::runElement() in s2survey/questionnaire/QuestionnaireElement.php on line 141
- called s2survey\questionnaire\QuestionnaireElement::run((obj)OutPage) in s2survey/questionnaire/QnrPage.php on line 717
- called s2survey\questionnaire\QnrPage::runContent((obj)OutPage) in s2survey/questionnaire/QnrPage.php on line 733
- called s2survey\questionnaire\QnrPage::runCreate((obj)OutPage) in inc/InterviewCase.php on line 488
- called InterviewCase::createQuestionnairePage() in inc/Interviewer.php on line 213
- called Interviewer::nd() in inc/Interviewer.php on line 252
- called Interviewer::ne() in inc/Interviewer.php on line 671
- called Interviewer::run((integer)3549) in embrace/index.php on line 4
- triggered

Die Seite, auf der das Problem auftritt, enthält nur PHP-Codes:

$screening = value('PS01_01');
if ($screening > 65) {
    goToPage('screen1');
}

$alter = value('SD02_01');
if ($alter >30) {
goToPage('age1');
}

$quotaGender = [
  1 => 220,  
  2 => 220,  
  3 => 50   
];
$gender = value('SD01');
$casesGender = statistic('count', 'DF04_01', $gender);
$maxPerGender = $quotaGender[$gender];
put('DF04_01', $gender);
if ($casesGender >= $maxPerGender) {
  goToPage('quota1');
}

goToPage('rand');
ago by SoSci Survey (370k points)
Für eine konkrete Antwort muss ich nochmal den Quellcode der Version 3.8.03 prüfen. Ob ein Update auf 3.8.04 das Problem löst, kann ich derweilen noch nicht sagen.

Aber ich habe die Vermutung, dass der Fehler gar nicht auf dieser Seite auftritt, sondern auf einer der Seiten, zu welchen der Code mittels goToPage() springt.

Wenn sie den Fehler zeitnah eingrenzen möchten, dann testen Sie bitte einmal, was passiert, wenn Sie alle goToPage() durch html() oder debug() ersetzen und den Fragebogen dann im Debug-Modus (gelber Pfeil) laufen lassen, also z.B.

if ($casesGender >= $maxPerGender) {
  debug('quota1');
}

Dass der Fragebogen dann zunächst nicht korrekt funktioniert ist klar, es geht hier zunächst darum, den Ort des Problems einzugrenzen.

Falls der Fehler weiterhin auftritt, ersetzen Sie bitte testweise diese Zeile:

$casesGender = statistic('count', 'DF04_01', $gender);

Wie folgt:

$casesGender = 0; // statistic('count', 'DF04_01', $gender);
debug($gender);

Falls Sie das UPdate auf 3.8.04 bekommen, können Sie übrigens statt diesem PHP-Code auch die neue Funktion zur Quotierung verwenden: https://www.soscisurvey.de/help/doku.php/de:survey:quota (wenn Sie diese unter 3.8.03 einsetzen, achten Sie darauf, explizit ein setStatus('complete'); im Fragebogen zu verwenden, sonst zählt die Funktion falsch).
ago by s361067 (120 points)
> Wenn sie den Fehler zeitnah eingrenzen möchten, dann testen Sie bitte einmal, was passiert, wenn Sie alle goToPage() durch html() oder debug() ersetzen und den Fragebogen dann im Debug-Modus (gelber Pfeil) laufen lassen

Hier erhalte ich eine Debug-Information:
'rand' = rand (string)

und eine Warnung:
Das Erstellen dieser Fragebogen-Seite erfordert unüblich viel RAM-Speicher (34.6 MB), davon 33.6 MB für den Inhalt der Seite. Mögliche Gründe sind viele Variablen, große PHP-Variablen oder die Verwendung aufwändiger PHP-Funktionen. Wenn der Speicherbedarf weiter ansteigt, kann dies zu Interview-Abbrüchen führen.

> Falls der Fehler weiterhin auftritt, ersetzen Sie bitte testweise diese Zeile...

Hier erhalte ich die Debug-Information:
$gender = 3 (string)
ago by SoSci Survey (370k points)
Okay, dann haben wir zwei mögliche Fehlerquellen.

Entweder die Seite "rand" erzeugt einen Fehler. Bitte testen Sie einmal, ob sich diese Seite direkt starten lässt.

Oder es liegt daran, dass die statistic()-Abfrage sehr viel RAM-Speicher in Anspruch nimmt. Zumindest würde ich diese als erste Ursache für die RAM-Warnung verdächtigen. Falls Sie die statistic()-Funktion bereits auskommentiert hatten und die Warnung dennoch erscheint ... handelt es sich vielleicht um ein ausnehmens großes Projekt mit sehr, sehr vielen Fragen und Items?

Falls es an der statistic()-Funktion liegt, wäre die Umstellung auf die dedizierte Quotierungs-Funktion eine Lösung. Diese wurde u.a. entwickelt, weil statistic() dafür sehr ineffizient ist.
ago by SoSci Survey (370k points)
Bitte posten Sie auch noch den PHP-Code der Seite "rand". Die Fehlermeldung bezieht sich auf eine Änderung der Variable REF im aktuellen Datensatz. Womöglich erfolgt dies durch PHP-Code auf der besagten Fragebogen-Seite.
ago by s361067 (120 points)
> Entweder die Seite "rand" erzeugt einen Fehler. Bitte testen Sie einmal, ob sich diese Seite direkt starten lässt.

Sie lässt sich starten , aber mit vielen Fehlermeldungen (Trying to access array offset on false).

Das Projekt enthält 5 Fragebögen zum Screening/zur nachfolgenden Zuweisung zu IG/KG, 5 Fragebögen für die IG und 5 Fragebögen für die KG (also 5 Befragungszeitpunkte). Bis Ende März hat alles problemlos funktioniert.

Hier ist der PHP-Code der Seite "rand" (enthält nur Code):

// Datenbank für Inhalte

$data = array(
  value('SD01', 'label'),
  value('SD02_01')
);
$key = 'SX-'.reference();
dbSet($key, $data);

// Blockrandomisierung nach Geschlecht

if (value('SD01') == 1) {
  // Zufallsgenerator R001 (Frauen)
  show('R001');
} else if (value('SD01') == 2) {
  // Zufallsgenerator R002 (Männer)
  show('R002');
} else {
  // Zufallsgenerator R003 (divers)
  show('R003');
}

// Ergebnis der Randomisierung in Datenbank

$key = 'RD-'.reference();
$rd_w = value('R001', 'label');
$rd_m = value('R002', 'label');
$rd_d = value('R003', 'label');

$rand = array(
    'R001' => $rd_w,
    'R002' => $rd_m,
    'R003' => $rd_d
);

dbSet($key, $rand);

$agesex = [
    'panelID' => reference(),  
    'sex' => value('SD01', 'label'),
    'age' => value('SD02_01')
];

// Weiterleitung zu IG1 oder KG1

if (
  (value('R001') == 1) ||
  (value('R002') == 1) ||
  (value('R003') == 1)
){
  multiLevelDown('IG1', $agesex);
}
elseif (
  (value('R001') == 2) ||
  (value('R002') == 2) ||
  (value('R003') == 2)
){
  multiLevelDown('KG1', $agesex);
}

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...