php / php/php-src

MYSQL_ATTR_INIT_COMMAND causing "The FastCGI process exited unexpectedly"

Offen
#9,381 9 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bug Extension: pdo_mysql Status: Needs Triage
Vorherrschende Sprache
C
Sterne
40.4k
Forks
8.2k
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
96

Beschreibung

Description

We have some PHP code that has ran fine for years under PHP 7 / IIS / FastCGI

When updating to PHP 8.1.9 we're getting "The FastCGI process exited unexpectedly"

After digging through the code we have identified the issue as follows:

When using PDO::MYSQL_ATTR_INIT_COMMAND in the new PDO() constructor - FastCGI just dies

		$options = [
			PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
			PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
			PDO::ATTR_EMULATE_PREPARES   => false,
			PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4;"
		];

            $this->m_db = new PDO(
                $m_PDOConnectionString,
                $Username,
                $Password,
                $options
            );

Resulted in this output:

C:\Program Files (x86)\PHP\v8.1.9.dev\php-cgi.exe - The FastCGI process exited unexpectedly

But I expected this output instead:

N/A - expected DB connection to open as normal

Only thing i can find in the windows event log is as follows:

Faulting application name: php-cgi.exe, version: 8.1.9.0, time stamp: 0x62e93213
Faulting module name: php8.dll, version: 8.1.9.0, time stamp: 0x62e93aac
Exception code: 0xc0000005
Fault offset: 0x00008fac
Faulting process id: 0x4d4
Faulting application start time: 0x01d8b3db35c39991
Faulting application path: C:\Program Files (x86)\PHP\v8.1.9.dev\php-cgi.exe
Faulting module path: C:\Program Files (x86)\PHP\v8.1.9.dev\php8.dll
Report Id: 3737167c-6b9f-48b2-bdfb-74baff4570ec
Faulting package full name: 
Faulting package-relative application ID: 

Removing MYSQL_ATTR_INIT_COMMAND solves the prooblem and everything starts working again.

The systax we're using here, i.e. "SET NAMES utf8mb4;" is a valid MySQL command which we've tested in mySQL workbench etc

Is this related to https://github.com/php/php-src/issues/9143 i wonder?

PHP Version

8.1.9

Operating System

Windows Server 2019

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduzieren Sie den gemeldeten Absturz unter PHP 8.1.9 auf Windows Server 2019 mit PDO::MYSQL_ATTR_INIT_COMMAND auf "SET NAMES utf8mb4;" gesetzt, und vergleichen Sie ihn anschließend mit demselben Konstruktor ohne diese Option. Beginnen Sie mit der Prüfung des zugehörigen Issues 9143 und der bereitgestellten Details aus dem Windows-Ereignisprotokoll; als abgeschlossen gilt die Aufgabe, wenn der FastCGI-Prozess nicht mehr unerwartet beendet wird und die Regression durch einen geeigneten Test abgedeckt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
mysql, php
Bereich
backend, databases
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.