0 votes
in SoSci Survey (dt.) by s259332 (110 points)
edited by SoSci Survey

In Kürze: eine vorige Woche noch fehlerfrei laufende Befragung liefert nun Fehlermeldung "Warnung: Das PHP Konstrukt 'GD01_01' darf im PHP-Code nicht verwendet werden."
Es wurde in der Zwischenzeit nichts an der Programmierung geändert. Die Fehlermeldung ist nicht dauerhaft, aber wenn Sie da ist, behindert sie die Funktionalität der Befragung, d.h. die durch den folgenden PHP-Code generierte Auswertung.

Was uns wundert:

  • Die Fehlermeldung wird nicht durchgängig angezeigt;
  • wird die Befragung von mehreren Personen gleichzeitig aussgefüllt, erscheint die Meldung nur bei einzelnen Personen;
  • die Meldung ist unabhängig vom genutzten Webbrowser/Endgerät (Apple und co.).

Hier das von uns eingefügte flexible Element - PHP-Code auf das sich die Fehlermeldung bezieht:


// Definition der Fragen und der Werte möglicher Antworten
$fragen = [
  'GD01_01' => [1 => 0, 2 => 1],  // In Frage AB01 hat die Antwort 1 den Wert 2, 2 hat den Wert 5, 3 den Wert 3
  'GD01_02' => [1 => 1, 2 => 0],  // Für AB02 werden die Werte 5 (Antwort 1), 4 (2) und 1 (3) vergeben
  'GD01_03' => [1 => 1, 2 => 0],
  'GD01_04' => [1 => 1, 2 => 0],
  'GD01_05' => [1 => 0, 2 => 1],
  'GD01_06' => [1 => 1, 2 => 0],
  'GD01_07' => [1 => 0, 2 => 1],
  'GD01_08' => [1 => 1, 2 => 0],
  'GD01_09' => [1 => 1, 2 => 0],
  'GD01_10' => [1 => 1, 2 => 0],
  'GD01_11' => [1 => 0, 2 => 1],
  'GD01_12' => [1 => 1, 2 => 0],
  'GD01_13' => [1 => 0, 2 => 1],
  'GD01_14' => [1 => 1, 2 => 0],
  'GD01_15' => [1 => 1, 2 => 0]
  // u.s.w.
];
 
// Zähl-Variable initialisieren
$points = 0;
 
// Mittels foreach kann man einfach die Schlüssel-Wert-Paare durchlaufen
foreach ($fragen as $variable => $values) {
  // Antwort des Teilnehmers abrufen
  $answer = value($variable);
  // Prüfen, ob für diese Antwort ein Wert vorliegt (sonst keinen Punkt vergeben)
  if (isset($values[$answer])) {
    // Zählen des Wertes
    $points += $values[$answer];
  }
}


//6-15 Punkte: <font color="red">keine Teilnahme möglich</font> 
// Das Ergebnis anzeigen oder anderweitig verarbeiten
html('<b><p>Nicht Vorlesen!</b><p> Erreichte Punktzahl: '.$points.'</p>
Beurteilung:
0-5 Punkte: <font color="blue">unauffällig - Teilnahme möglich!</font>
6-15 Punkte: <font color="red">keine Teilnahme möglich</font>   
</p>
Auch wenn die Teilnehmende Person mehr als 6 Punkte hat, den Fragebogen dennoch fortführen und <b>nicht sagen</b>, dass keine Teilnahme möglich sei.');

Die Funktionsstörung hat leider großen EInfluss auf unser Projekt, darum freuen wir uns über alle Hinweise, wie wir das Probleme beheben können!
DANKE!

1 Answer

0 votes
by SoSci Survey (327k points)

Ich habe Ihren Code von oben in ein Projekt auf www.soscisurvey.de kopiert und bekomme den Fehler dort nicht angezeigt. SoSci Survey beschwert sich nur (korrekt) über die in meinem Testprojekt natürlich nicht vorhandenen Variablen.

Daher folgende Rückfragen:

  1. Sind Sie sicher, dass das 1:1 der Code in Ihrem Fragebogen ist?

  2. Sind Sie sicher, dass sich die Fehlermeldung auf diesen PHP-Code bezieht und nicht vielleicht auf irgendetwas im Karteireiter "PHP-Funktionen"?

  3. Arbeiten Sie auf www.soscisurvey.de oder auf einem anderen Server? Wenn es nicht unser Server ist, welche Programmversion (links unten) hat dieser?

by s259332 (110 points)
Vielen Dank für die Hilfe!
1. Ja, ist aus dem php-Code-Feld rauskopiert. Der Code hat (unverändert) auch bis vor einiger Zeit funktioniert.
2. Der Karteireiter PHP-Funktionen ist leer, die Fehlermeldung bezieht sich vermutlich also nicht darauf.
3. Wir arbeiten auf einem eigenen Server mit der Programversion 3.4.20. Unsere PHP-Version ist 8.0.29, laut dem Serverstatus innerhalb von SoSci sollte die PHP-Version allerdings kompatibel sein.

Wir bekommen die Fehlermeldung jetzt auch in anderen (nicht mehr aktiven) Projekten, die PHP-Code enthalten.
by SoSci Survey (327k points)
Danke für die zusätzlichen Informationen.

Wir haben ein Testsystem mit SoSci Survey v3.4.20 auf PHP 8.0.29 unter Windows aufgesetzt, konnten das Problem aber anhand Ihres Codes nicht replizieren. Dort funktioniert der PHP-Code - soweit ersichtlich - einwandfrei.

Könnten Sie wohl bitte in der "Server-Verwaltung" -> "Server-Wartung" unter "System-Status" prüfen, ob dort irgendwelche Fehler angezeigt werden, z.B. ob Dateien verändert wurden?

Haben Sie getestet, ob sich etwas ändert, wenn Sie den Code aus dem Feld oben in Ihren Fragebogen kopieren? Nur für den Fall, dass sich in Ihrem Code irgendwo unsichtbare Zeichen versteckt haben sollten...

Wenn beides nicht weiterhilft, kann ich nur anbieten, Ihnen eine Version mit erweitertem Logging zur Verfügung zu stellen, damit wir das Problem schrittweise eingrenzen. Schreiben Sie in dem Fall bitte eine kurze E-Mail an info@soscisurvey.de
by s259332 (110 points)
Unter System-Status werden keine veränderten Dateien o.Ä. angezeigt. Den Code zu kopieren ändert auch nichts.

Wir haben mittlerweile noch ein paar Zusatzinformationen gesammelt: Der Fehler tritt immer erst durch den manuellen Klick auf "weiter" auf (also wenn man die nächste Fragebogenseite aufruft), hier der entsprechende Ausschnitt aus dem error_log:
ResA23 ist das Projektverzeichnis, die ersten beiden Zeilen scheinen den Fehler zu erhalten (sind im log rot markiert), die letzte Zeile funktioniert dann wieder (grün)

PHP : script '/.../websource/ResA23/csfr.php' not found or unable to stat

Apache : "POST /ResA23/csfr.php HTTP/1.1" 404

Apache : "POST /admin/csfr.php HTTP/1.1" 200
by SoSci Survey (327k points)
Eigentlich sollten Fragebogen-Seiten nicht nach csfr.php suchen ... aber ich bin ziemlich sicher, dass diese Fehlermeldung nicht mit der o.g. Fehlermeldung zusammenhängt.

Könnten Sie bitte noch einen Blick in die error.phpcode.log werfen, ob dort etwas Sachdienliches steht?

> immer erst durch den manuellen Klick auf "weiter"

Ich habe es auch damit versucht zu replizieren, kann das Problem aber weitehrin nicht replizieren. Könnten Sie bitte einmal die Debug-Information posten (https://www.soscisurvey.de/help/doku.php/de:create:debugging), die nach dem Klick auf "Weiter" angezeigt wird?

Wenn Sie möchten, senden Sie mir das betroffene Projekt als XML-Datei an die info@soscisurvey.de, dann kann ich es auch nochmal mit dem kompletten Kontext in der Testumgebung starten.

Und es steht naürlich das Angebot, dass ich Ihnen eine Version mit erweitertem Logging speziell zu dem Problem erstelle und zukommen lasse.

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

...