Skip to content

RuntimeException thrown when capturing event during request with file uploads #1520

@mfb

Description

@mfb

How do you use Sentry?

Sentry Saas (sentry.io)

Version

3.17.0

Steps to Reproduce

Capture event during a request with a file upload. This exception appears to only be thrown if the file upload was already processed by move_uploaded_file() at the time the event is captured, otherwise the temporary file still exists.

Previously, Sentry used guzzlehttp/psr7 ServerRequest alone, and I don't think this class tried to open the temporary file, but for some reason, php-http/discovery Psr17Factory assumes the file will still be there and tries to open it.

Expected Result

Event is sent to Sentry

Actual Result

RuntimeException: Unable to open "/tmp/phpPHolDZ" using mode "r": fopen(/tmp/phpPHolDZ): Failed to open stream: No such file or directory in GuzzleHttp\Psr7\Utils::GuzzleHttp\Psr7\{closure}() (line 357 of /vendor/guzzlehttp/psr7/src/Utils.php)

#0 [internal function]: GuzzleHttp\Psr7\Utils::GuzzleHttp\Psr7\{closure}(2, '...', '...', 369)
#1 /vendor/guzzlehttp/psr7/src/Utils.php(369): fopen('...', '...')
#2 /vendor/guzzlehttp/psr7/src/HttpFactory.php(56): GuzzleHttp\Psr7\Utils::tryFopen('...', '...')
#3 /vendor/php-http/discovery/src/Psr17Factory.php(124): GuzzleHttp\Psr7\HttpFactory->createStreamFromFile('...', '...')
#4 /vendor/php-http/discovery/src/Psr17Factory.php(286): Http\Discovery\Psr17Factory->createStreamFromFile('...', '...')
#5 /vendor/php-http/discovery/src/Psr17Factory.php(292): Http\Discovery\Psr17Factory->createUploadedFileFromSpec(Array)
#6 /vendor/php-http/discovery/src/Psr17Factory.php(292): Http\Discovery\Psr17Factory->createUploadedFileFromSpec(Array)
#7 /vendor/php-http/discovery/src/Psr17Factory.php(269): Http\Discovery\Psr17Factory->createUploadedFileFromSpec(Array)
#8 /vendor/php-http/discovery/src/Psr17Factory.php(184): Http\Discovery\Psr17Factory->normalizeFiles(Array)
#9 /vendor/php-http/discovery/src/Psr17Factory.php(106): Http\Discovery\Psr17Factory->buildServerRequestFromGlobals(Object(GuzzleHttp\Psr7\ServerRequest), Array, Array)
#10 /vendor/sentry/sentry/src/Integration/RequestFetcher.php(25): Http\Discovery\Psr17Factory->createServerRequestFromGlobals()
#11 /vendor/sentry/sentry/src/Integration/RequestIntegration.php(125): Sentry\Integration\RequestFetcher->fetchRequest()
#12 /vendor/sentry/sentry/src/Integration/RequestIntegration.php(117): Sentry\Integration\RequestIntegration->processEvent(Object(Sentry\Event), Object(Sentry\Options))
#13 /vendor/sentry/sentry/src/State/Scope.php(378): Sentry\Integration\RequestIntegration->Sentry\Integration\{closure}(Object(Sentry\Event), Object(Sentry\EventHint))
#14 /vendor/sentry/sentry/src/Client.php(292): Sentry\State\Scope->applyToEvent(Object(Sentry\Event), Object(Sentry\EventHint))
#15 /vendor/sentry/sentry/src/Client.php(169): Sentry\Client->prepareEvent(Object(Sentry\Event), Object(Sentry\EventHint), Object(Sentry\State\Scope))
#16 /vendor/sentry/sentry/src/State/Hub.php(152): Sentry\Client->captureEvent(Object(Sentry\Event), Object(Sentry\EventHint), Object(Sentry\State\Scope))
#17 /vendor/sentry/sentry/src/functions.php(55): Sentry\State\Hub->captureEvent(Object(Sentry\Event), Object(Sentry\EventHint))

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions