PHP 7.0 neben 7.2

Hallo Steffen,

ich habe es jetzt so angepasst:

[moodle]
listen = /var/lib/php7.0-fpm/moodle31.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
user = www-data
group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0
chdir = /
env[HOSTNAME] = $HOSTNAME
env[TMP] = /var/www/moodletemp
env[TMPDIR] = /var/www/moodletemp
env[TEMP] = /var/www/moodletemp
env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
php_admin_value[open_basedir] = /var/www/moodle:/var/www/moodle/moodledata:/var/www/moodletemp
php_admin_value[session.save_path] = /var/www/moodletemp
php_admin_value[upload_tmp_dir] = /var/www/moodletemp
php_admin_flag[cgi.fix_pathinfo] = 1

Das ganze wie du in Unterordner von /var/www/moodle zu packen geht bei mir nicht, weil ich nicht z.B. über moodle.unseredomain.de aufrufe sondern über server.unseredomain.de/moodle, wobei server.unseredomain.de auch auf eine Seite zeigt.
Sonst müsste ich für Moodle ja server.unseredomain.de/moodle/web aufrufen.

Ist ja eh erst mal nur ein temporäres Konstrukt.

Ups, das habe ich ja noch gar nicht gemacht. Kein Wunder, dass das noch nicht gehen kann.

Muss ich noch schauen, wie das dann mit Apache geht.

Viele Grüße
Steffen

Ach okay! Wenn du nicht über Subdomains arbeitest, sondern über Unterordner, dann macht es vielleicht auch mehr Sinn, nicht im virtuellen Host Dinge für Moodle anzupassen, sondern eine .htaccess in den Unterordner zu legen und dort drin die PHP-FPM Nutzung vorzugeben.

Viele Grüße

Steffen

Hallo ihr zwei Steffens :slight_smile:

freut mich, dass Steffen inzwischen nicht mehr nur mit Steffen
selbstgespräche führt, sondern auch mit Steffen :slight_smile:

und so störe ich ja ungerne eure Zweisamkeit: wollte aber doch
einwerfen, ob ihr auch die email von BelWü bekommen habt, dass sie eure
moodle Installation in 1 bis 2 Tagen auch auf neue Hardware migrieren …
Also vielelicht lohnt die ganze Arbeit ja auch garnicht so sehr …

LG

Holger

Hallo Holger,

Nein die E-Mail habe ich nicht bekommen.
Von meinen KuK her gesehen lohnt sich das eh nicht. Ich hatte gedacht, dass sich mehr durch diese Situation mal an Moodle wagen, aber die Meisten haben gestern Unmengen Papier verteilt und den Rest für 3 Wochen per E-Mail verschickt.
Egal ob Cloud oder Moodle whatever, wenn ich hier so mitkriege, wie andere Kollegien solche Systeme nutzen, kann ich immer nur neidisch werden.
Insofern ist das eher "ich will das umgesetzt und gelöst kriegen.

Aber nochmal zum neuen Belwü-Moodle:
Weißt du, ob das dann auch Moodle > 3.1 ist?
Denn dann muss ich unser gekauftes Theme noch vorbereiten. Da braucht man ab 3.2 eine andere Version.

Viele Grüße
Steffen

Hallo Steffen,

Aber nochmal zum neuen Belwü-Moodle:
Weißt du, ob das dann auch Moodle > 3.1 ist?

das steht in der mail nicht drin.
Sie reden von „migrieren auf neue Linux-Server“.

Ich glaube nicht, dass die migrieren und upgraden gleichzeitig …

LG

Holger

Hallo Holger,

also ich bin ja mal gespannt, ob das Moodle dann auf neuer Hardware sinnvoll nutzbar wird. Selbst jetzt kommt bei jedem 5. Seitenaufruf noch immer ein Timeout. Ich kann mir nicht vorstellen, dass um die Uhrzeit noch viele KuK oder gar SuS vesuchen, mit Moodle zu arbeiten - sind ja nicht alle so Verrückte wie wir :slight_smile:

Viele Grüße
Steffen

Hallo Steffen,

ich habe eine .htaccess angelegt in /var/www/moodle mit Inhalt

<FilesMatch .php$>
SetHandler „proxy:unix:/var/lib/php7.0-fpm/moodle31.sock|fcgi://localhost“

Ich bekomme jetzt keine leere weiße Seite mehr, aber einen 500 Internal Server Error.

Also passt wohl an meiner php7.0 Konfiguration noch immer was nicht.
Ist das richtig, dass in /var/lib/php7.0-fpm die Datei moodle31.sock leer ist?!? Wohl kaum.

Viele Grüße
Steffen

Hallo,

habe vergessen, aus dem Copy&Paste den Proxy raus zu nehmen:

SetHandler „proxy:unix:/var/lib/php7.0-fpm/moodle31.sock|fcgi://localhost“

ist jetzt

SetHandler „/var/lib/php7.0-fpm/moodle31.sock|fcgi://localhost“

Allerdings sieht meine Seite beim Aufruf von Moodle jetzt so aus:

. /** * Moodle frontpage. * * @package core * @copyright 1999 onwards Martin Dougiamas (http://dougiamas.com) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ if (!file_exists(’./config.php’)) { header(‚Location: install.php‘); die; } require_once(‚config.php‘); require_once($CFG->dirroot .’/course/lib.php’); require_once($CFG->libdir .’/filelib.php’); redirect_if_major_upgrade_required(); $urlparams = array(); if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_MY) && optional_param(‚redirect‘, 1, PARAM_BOOL) === 0) { $urlparams[‚redirect‘] = 0; } $PAGE->set_url(’/’, $urlparams); $PAGE->set_pagelayout(‚frontpage‘); $PAGE->set_other_editing_capability(‚moodle/course:update‘); $PAGE->set_other_editing_capability(‚moodle/course:manageactivities‘); $PAGE->set_other_editing_capability(‚moodle/course:activityvisibility‘); // Prevent caching of this page to stop confusion when changing page after making AJAX changes. $PAGE->set_cacheable(false); require_course_login($SITE); $hassiteconfig = has_capability(‚moodle/site:config‘, context_system::instance()); // If the site is currently under maintenance, then print a message. if (!empty($CFG->maintenance_enabled) and !$hassiteconfig) { print_maintenance_message(); } if ($hassiteconfig && moodle_needs_upgrading()) { redirect($CFG->wwwroot .’/’. $CFG->admin .’/index.php’); } if (get_home_page() != HOMEPAGE_SITE) { // Redirect logged-in users to My Moodle overview if required. $redirect = optional_param(‚redirect‘, 1, PARAM_BOOL); if (optional_param(‚setdefaulthome‘, false, PARAM_BOOL)) { set_user_preference(‚user_home_page_preference‘, HOMEPAGE_SITE); } else if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_MY) && $redirect === 1) { redirect($CFG->wwwroot .’/my/’); } else if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_USER)) { $frontpagenode = $PAGE->settingsnav->find(‚frontpage‘, null); if ($frontpagenode) { $frontpagenode->add( get_string(‚makethismyhome‘), new moodle_url(’/’, array(‚setdefaulthome‘ => true)), navigation_node::TYPE_SETTING); } else { $frontpagenode = $PAGE->settingsnav->add(get_string(‚frontpagesettings‘), null, navigation_node::TYPE_SETTING, null); $frontpagenode->force_open(); $frontpagenode->add(get_string(‚makethismyhome‘), new moodle_url(’/’, array(‚setdefaulthome‘ => true)), navigation_node::TYPE_SETTING); } } } // Trigger event. course_view(context_course::instance(SITEID)); // If the hub plugin is installed then we let it take over the homepage here. if (file_exists($CFG->dirroot.’/local/hub/lib.php’) and get_config(‚local_hub‘, ‚hubenabled‘)) { require_once($CFG->dirroot.’/local/hub/lib.php’); $hub = new local_hub(); $continue = $hub->display_homepage(); // Function display_homepage() returns true if the hub home page is not displayed // …mostly when search form is not displayed for not logged users. if (empty($continue)) { exit; } } $PAGE->set_pagetype(‚site-index‘); $PAGE->set_docs_path(’’); $editing = $PAGE->user_is_editing(); $PAGE->set_title($SITE->fullname); $PAGE->set_heading($SITE->fullname); $courserenderer = $PAGE->get_renderer(‚core‘, ‚course‘); echo $OUTPUT->header(); // Print Section or custom info. $siteformatoptions = course_get_format($SITE)->get_format_options(); $modinfo = get_fast_modinfo($SITE); $modnames = get_module_types_names(); $modnamesplural = get_module_types_names(true); $modnamesused = $modinfo->get_used_module_names(); $mods = $modinfo->get_cms(); if (!empty($CFG->customfrontpageinclude)) { include($CFG->customfrontpageinclude); } else if ($siteformatoptions[‚numsections‘] > 0) { if ($editing) { // Make sure section with number 1 exists. course_create_sections_if_missing($SITE, 1); // Re-request modinfo in case section was created. $modinfo = get_fast_modinfo($SITE); } $section = $modinfo->get_section_info(1); if (($section && (!empty($modinfo->sections[1]) or !empty($section->summary))) or $editing) { echo $OUTPUT->box_start(‚generalbox sitetopic‘); // If currently moving a file then show the current clipboard. if (ismoving($SITE->id)) { $stractivityclipboard = strip_tags(get_string(‚activityclipboard‘, ‚‘, $USER->activitycopyname)); echo ’

‚; echo "$stractivityclipboard ("; echo get_string(‚cancel‘) . ')‘; echo ’

'; } $context = context_course::instance(SITEID); // If the section name is set we show it. if (trim($section->name) !== ‚‘) { echo $OUTPUT->heading( format_string($section->name, true, array(‚context‘ => $context)), 2, ‚sectionname‘ ); } $summarytext = file_rewrite_pluginfile_urls($section->summary, ‚pluginfile.php‘, $context->id, ‚course‘, ‚section‘, $section->id); $summaryformatoptions = new stdClass(); $summaryformatoptions->noclean = true; $summaryformatoptions->overflowdiv = true; echo format_text($summarytext, $section->summaryformat, $summaryformatoptions); if ($editing && has_capability(‚moodle/course:update‘, $context)) { $streditsummary = get_string(‚editsummary‘); echo "id">pix_url(‚t/edit‘) . „“ „. " class=„iconsmall“ alt=“$streditsummary" />

"; } $courserenderer = $PAGE->get_renderer(‚core‘, ‚course‘); echo $courserenderer->course_section_cm_list($SITE, $section); echo $courserenderer->course_section_add_cm_control($SITE, $section->section); echo $OUTPUT->box_end(); } } // Include course AJAX. include_course_ajax($SITE, $modnamesused); if (isloggedin() and !isguestuser() and isset($CFG->frontpageloggedin)) { $frontpagelayout = $CFG->frontpageloggedin; } else { $frontpagelayout = $CFG->frontpage; } foreach (explode(’,’, $frontpagelayout) as $v) { switch ($v) { // Display the main part of the front page. case FRONTPAGENEWS: if ($SITE->newsitems) { // Print forums only when needed. require_once($CFG->dirroot .’/mod/forum/lib.php’); if (! $newsforum = forum_get_course_forum($SITE->id, ‚news‘)) { print_error(‚cannotfindorcreateforum‘, ‚forum‘); } // Fetch news forum context for proper filtering to happen. $newsforumcm = get_coursemodule_from_instance(‚forum‘, $newsforum->id, $SITE->id, false, MUST_EXIST); $newsforumcontext = context_module::instance($newsforumcm->id, MUST_EXIST); $forumname = format_string($newsforum->name, true, array(‚context‘ => $newsforumcontext)); echo html_writer::link(’#skipsitenews’, get_string(‚skipa‘, ‚access‘, core_text::strtolower(strip_tags($forumname))), array(‚class‘ => ‚skip-block skip‘)); // Wraps site news forum in div container. echo html_writer::start_tag(‚div‘, array(‚id‘ => ‚site-news-forum‘)); if (isloggedin()) { $SESSION->fromdiscussion = $CFG->wwwroot; $subtext = ‚‘; if (\mod_forum\subscriptions::is_subscribed($USER->id, $newsforum)) { if (!\mod_forum\subscriptions::is_forcesubscribed($newsforum)) { $subtext = get_string(‚unsubscribe‘, ‚forum‘); } } else { $subtext = get_string(‚subscribe‘, ‚forum‘); } echo $OUTPUT->heading($forumname); $suburl = new moodle_url(’/mod/forum/subscribe.php’, array(‚id‘ => $newsforum->id, ‚sesskey‘ => sesskey())); echo html_writer::tag(‚div‘, html_writer::link($suburl, $subtext), array(‚class‘ => ‚subscribelink‘)); } else { echo $OUTPUT->heading($forumname); } forum_print_latest_discussions($SITE, $newsforum, $SITE->newsitems, ‚plain‘, ‚p.modified DESC‘); // End site news forum div container. echo html_writer::end_tag(‚div‘); echo html_writer::tag(‚span‘, ‚‘, array(‚class‘ => ‚skip-block-to‘, ‚id‘ => ‚skipsitenews‘)); } break; case FRONTPAGEENROLLEDCOURSELIST: $mycourseshtml = $courserenderer->frontpage_my_courses(); if (!empty($mycourseshtml)) { echo html_writer::link(’#skipmycourses’, get_string(‚skipa‘, ‚access‘, core_text::strtolower(get_string(‚mycourses‘))), array(‚class‘ => ‚skip skip-block‘)); // Wrap frontpage course list in div container. echo html_writer::start_tag(‚div‘, array(‚id‘ => ‚frontpage-course-list‘)); echo $OUTPUT->heading(get_string(‚mycourses‘)); echo $mycourseshtml; // End frontpage course list div container. echo html_writer::end_tag(‚div‘); echo html_writer::tag(‚span‘, ‚‘, array(‚class‘ => ‚skip-block-to‘, ‚id‘ => ‚skipmycourses‘)); break; } // No „break“ here. If there are no enrolled courses - continue to ‚Available courses‘. case FRONTPAGEALLCOURSELIST: $availablecourseshtml = $courserenderer->frontpage_available_courses(); if (!empty($availablecourseshtml)) { echo html_writer::link(’#skipavailablecourses’, get_string(‚skipa‘, ‚access‘, core_text::strtolower(get_string(‚availablecourses‘))), array(‚class‘ => ‚skip skip-block‘)); // Wrap frontpage course list in div container. echo html_writer::start_tag(‚div‘, array(‚id‘ => ‚frontpage-course-list‘)); echo $OUTPUT->heading(get_string(‚availablecourses‘)); echo $availablecourseshtml; // End frontpage course list div container. echo html_writer::end_tag(‚div‘); echo html_writer::tag(‚span‘, ‚‘, array(‚class‘ => ‚skip-block-to‘, ‚id‘ => ‚skipavailablecourses‘)); } break; case FRONTPAGECATEGORYNAMES: echo html_writer::link(’#skipcategories’, get_string(‚skipa‘, ‚access‘, core_text::strtolower(get_string(‚categories‘))), array(‚class‘ => ‚skip skip-block‘)); // Wrap frontpage category names in div container. echo html_writer::start_tag(‚div‘, array(‚id‘ => ‚frontpage-category-names‘)); echo $OUTPUT->heading(get_string(‚categories‘)); echo $courserenderer->frontpage_categories_list(); // End frontpage category names div container. echo html_writer::end_tag(‚div‘); echo html_writer::tag(‚span‘, ‚‘, array(‚class‘ => ‚skip-block-to‘, ‚id‘ => ‚skipcategories‘)); break; case FRONTPAGECATEGORYCOMBO: echo html_writer::link(’#skipcourses’, get_string(‚skipa‘, ‚access‘, core_text::strtolower(get_string(‚courses‘))), array(‚class‘ => ‚skip skip-block‘)); // Wrap frontpage category combo in div container. echo html_writer::start_tag(‚div‘, array(‚id‘ => ‚frontpage-category-combo‘)); echo $OUTPUT->heading(get_string(‚courses‘)); echo $courserenderer->frontpage_combo_list(); // End frontpage category combo div container. echo html_writer::end_tag(‚div‘); echo html_writer::tag(‚span‘, ‚‘, array(‚class‘ => ‚skip-block-to‘, ‚id‘ => ‚skipcourses‘)); break; case FRONTPAGECOURSESEARCH: echo $OUTPUT->box($courserenderer->course_search_form(’’, ‚short‘), ‚mdl-align‘); break; } echo ’
'; } if ($editing && has_capability(‚moodle/course:create‘, context_system::instance())) { echo $courserenderer->add_new_course_button(); } echo $OUTPUT->footer();

Das hat aber wohl eher nichts mehr mit dem eigentlchen PHP Problem zu tun?!?

Wobei, das ist der Quelltext aus der index.php, was bedeuten würde, dass deren Inhalt angezeigt statt die Webseite geladen wird…

Viele Grüße
Steffen

Hallo Steffen,

der Socket muss eine leere Datei sein.

Das Problem kann jetzt leider sehr vielfältig sein.

Ist Moodle eine Neuinstallation? Wenn nein, ist in der config.php von Moodle alles richtig? Wenn ja, ist die Installation über das install-Skript von Moodle ohne Probleme durchgelaufen?
Sind alle notwendigen PHP-Erweiterungen installiert?
Sind die Rechte und Berechtigungen der Moodle-Installation alle beim Web-Benutzer (www-data)?

Falls es an den Apache-Einstellungen liegt, bin ich überfragt und kann nur mit gefährlichem Halbwissen helfen.

Viele Grüße aus Leipzig

Steffen

Hallo Steffen,

das was du geschickt hast ist der Inhalt der php-Datei, die wird also vom Apachen nicht geparst sondern direkt 1:1 ausgegeben. Das ist sehr gefährlich, da z.B. in der config.php ja Daten stehen, die nicht öffentlich werden sollten.
Du musst dem Apache so konfigurieren, dass er die php-Dateien est mit php parst und den dabei enstehenden Inhalt ausgibt.

Ich habe parallele php Installationen gemieden, da es mein Wissen überschreitet, ich kann dir daher nicht weiterhelfen, abe als Suchansatz für dich einer paar Stichpunkte zur Suche:

apache doesn’t parse php parallel php

Viel Erfolg.

Hallo Steffen,

nein, keine Neuinstallation, ich will ja das vorhandene Moodle umziehen.
In der config.php denke ich, ist alles richtig.

Viele Grüße
Steffen

Hallo Sven,

ja, das habe ich beim genaueren Hinsehen dann auch kapiert.

Die Gefahr, dass das jemand sehe kann - auch Suchmaschinen - ist eigentlich null.
Läuft in einem Unterverzeichnis der Domain, das bislang nur ich kenne :wink:

Ohne das /wasauchimmer hinten dran landet man ganz woanders.

Viele Grüße
Steffen

Hallo Steffen,

wenn ich das jetzt zum laufen bekommen wollte, würde ich zuerst mit einer neuen Installation starten, damit ich weiß, ob alles benötigte da ist und funktioniert.

https://download.moodle.org/stable31/

Ich denke das Installscript wird z.B. Aussagen über fehlende Extensions von PHP7.0 geben.

Hast du mal geschaut, ob du alle hast?

Was Moodle braucht:

https://docs.moodle.org/31/en/PHP

Die PHP-Einstellungen kannst du dann entweder über die moodle.conf für den Socket setzen oder aber auch über die htaccess.

Viele Grüße aus Leipzig

Steffen