php / php/php-src

MYSQL_ATTR_INIT_COMMAND causing "The FastCGI process exited unexpectedly"

Open
#9,381 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug Extension: pdo_mysql Status: Needs Triage
Dominant language
C
Stars
40.4k
Forks
8.2k
Avg merge
2d 13h
Merged PRs (30d)
96

Description

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the reported crash on PHP 8.1.9 under Windows Server 2019 with PDO::MYSQL_ATTR_INIT_COMMAND set to "SET NAMES utf8mb4;", then compare it with the same constructor without that option. Start by reviewing the related issue 9143 and the supplied Windows event-log details; done means the FastCGI process no longer exits unexpectedly and the regression is covered by an appropriate test.

Written by the indexing model from the issue text.

Assessment

Tech stack
mysql, php
Domain
backend, databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.