Skip to content

Declaration error in PHP 8.4 for MessagePartStreamDecorator::read() #263

Description

@wurst-hans

I'm using DirectoryTree/ImapEngine on PHP 8.4.11 which throws a fatal error in your library:

Fatal error: Declaration of ZBateson\MailMimeParser\Stream\MessagePartStreamDecorator::read(int $length): string must be compatible with PsrExt\Http\Message\StreamInterface::read($length) in /var/www/html/vendor/zbateson/mail-mime-parser/src/Stream/MessagePartStreamDecorator.php on line 45

Call Stack:
    0.0001     390976   1. {main}() /var/www/html/console:0
    0.6704    3434496   7. DirectoryTree\ImapEngine\Message->to() /var/www/html/app/Tasks/Common/ApiImportTask.php:44
    0.6728    3439744   8. DirectoryTree\ImapEngine\Message->addresses($header = 'To') /var/www/html/vendor/directorytree/imapengine/src/HasParsedMessage.php:109
    0.6728    3439744   9. DirectoryTree\ImapEngine\Message->header($name = 'To', $offset = ???) /var/www/html/vendor/directorytree/imapengine/src/HasParsedMessage.php:193
    0.6728    3439744  10. DirectoryTree\ImapEngine\Message->parse() /var/www/html/vendor/directorytree/imapengine/src/HasParsedMessage.php:234
    0.6739    3445256  11. DirectoryTree\ImapEngine\MessageParser::parse($contents = '[private]'...) /var/www/html/vendor/directorytree/imapengine/src/HasParsedMessage.php:246
    0.7913    4838112  12. ZBateson\MailMimeParser\MailMimeParser->parse($resource = '[private]'..., $attached = TRUE) /var/www/html/vendor/directorytree/imapengine/src/MessageParser.php:20
    0.7939    4992408  13. ZBateson\MailMimeParser\Parser\MessageParserService->parse($stream = class GuzzleHttp\Psr7\Stream { private $stream = resource(273) of type (stream); private $size = NULL; private $seekable = TRUE; private $readable = TRUE; private $writable = TRUE; private $uri = 'php://temp'; private $customMetadata = ['mmp-detached-stream' => FALSE] }) /var/www/html/vendor/zbateson/mail-mime-parser/src/MailMimeParser.php:217
    0.7976    5082784  14. ZBateson\MailMimeParser\Parser\ParserManagerService->createParserProxyFor($partBuilder = class ZBateson\MailMimeParser\Parser\PartBuilder { private int $streamPartStartPos = 0; private int $streamPartEndPos = *uninitialized*; private ?int $streamContentStartPos = NULL; private ?int $streamContentEndPos = NULL; private ZBateson\MailMimeParser\Message\PartHeaderContainer $headerContainer = class ZBateson\MailMimeParser\Message\PartHeaderContainer { protected Psr\Log\LoggerInterface $logger = class PsrExt\Log\NullLogger { ... }; private array ${ZBateson\MailMimeParser\ErrorBag}errors = [...]; private bool ${ZBateson\MailMimeParser\ErrorBag}validated = FALSE; protected $headerFactory = class ZBateson\MailMimeParser\Header\HeaderFactory { ... }; private $headers = [...]; private $headerObjects = [...]; private $headerMap = [...]; private $nextIndex = 21 }; private ?Psr\Http\Message\StreamInterface $messageStream = class GuzzleHttp\Psr7\Stream { private $stream = resource(273) of type (stream); private $size = NULL; private $seekable = TRUE; private $readable = TRUE; private $writable = TRUE; private $uri = 'php://temp'; private $customMetadata = [...] }; private mixed $messageHandle = resource(281) of type (stream); private ?ZBateson\MailMimeParser\Parser\Proxy\ParserMimePartProxy $parent = NULL }) /var/www/html/vendor/zbateson/mail-mime-parser/src/Parser/MessageParserService.php:92
    0.7976    5082784  15. ZBateson\MailMimeParser\Parser\Proxy\ParserMessageProxyFactory->newInstance($partBuilder = class ZBateson\MailMimeParser\Parser\PartBuilder { private int $streamPartStartPos = 0; private int $streamPartEndPos = *uninitialized*; private ?int $streamContentStartPos = NULL; private ?int $streamContentEndPos = NULL; private ZBateson\MailMimeParser\Message\PartHeaderContainer $headerContainer = class ZBateson\MailMimeParser\Message\PartHeaderContainer { protected Psr\Log\LoggerInterface $logger = class PsrExt\Log\NullLogger { ... }; private array ${ZBateson\MailMimeParser\ErrorBag}errors = [...]; private bool ${ZBateson\MailMimeParser\ErrorBag}validated = FALSE; protected $headerFactory = class ZBateson\MailMimeParser\Header\HeaderFactory { ... }; private $headers = [...]; private $headerObjects = [...]; private $headerMap = [...]; private $nextIndex = 21 }; private ?Psr\Http\Message\StreamInterface $messageStream = class GuzzleHttp\Psr7\Stream { private $stream = resource(273) of type (stream); private $size = NULL; private $seekable = TRUE; private $readable = TRUE; private $writable = TRUE; private $uri = 'php://temp'; private $customMetadata = [...] }; private mixed $messageHandle = resource(281) of type (stream); private ?ZBateson\MailMimeParser\Parser\Proxy\ParserMimePartProxy $parent = NULL }, $parser = class ZBateson\MailMimeParser\Parser\MimeParserService { protected ZBateson\MailMimeParser\Parser\Proxy\ParserPartProxyFactory $parserMessageProxyFactory = class ZBateson\MailMimeParser\Parser\Proxy\ParserMessageProxyFactory { protected Psr\Log\LoggerInterface $logger = class PsrExt\Log\NullLogger { ... }; protected ZBateson\MailMimeParser\Stream\StreamFactory $streamFactory = class ZBateson\MailMimeParser\Stream\StreamFactory { ... }; protected ZBateson\MailMimeParser\Parser\Part\ParserPartStreamContainerFactory $parserPartStreamContainerFactory = class ZBateson\MailMimeParser\Parser\Part\ParserPartStreamContainerFactory { ... }; protected ZBateson\MailMimeParser\Message\Factory\PartHeaderContainerFactory $partHeaderContainerFactory = class ZBateson\MailMimeParser\Message\Factory\PartHeaderContainerFactory { ... }; protected ZBateson\MailMimeParser\Parser\Part\ParserPartChildrenContainerFactory $parserPartChildrenContainerFactory = class ZBateson\MailMimeParser\Parser\Part\ParserPartChildrenContainerFactory { ... }; protected ZBateson\MailMimeParser\Message\Helper\MultipartHelper $multipartHelper = class ZBateson\MailMimeParser\Message\Helper\MultipartHelper { ... }; protected ZBateson\MailMimeParser\Message\Helper\PrivacyHelper $privacyHelper = class ZBateson\MailMimeParser\Message\Helper\PrivacyHelper { ... } }; protected ZBateson\MailMimeParser\Parser\Proxy\ParserPartProxyFactory $parserPartProxyFactory = class ZBateson\MailMimeParser\Parser\Proxy\ParserMimePartProxyFactory { protected Psr\Log\LoggerInterface $logger = class PsrExt\Log\NullLogger { ... }; protected ZBateson\MailMimeParser\Stream\StreamFactory $streamFactory = class ZBateson\MailMimeParser\Stream\StreamFactory { ... }; protected ZBateson\MailMimeParser\Parser\Part\ParserPartStreamContainerFactory $parserPartStreamContainerFactory = class ZBateson\MailMimeParser\Parser\Part\ParserPartStreamContainerFactory { ... }; protected ZBateson\MailMimeParser\Message\Factory\PartHeaderContainerFactory $partHeaderContainerFactory = class ZBateson\MailMimeParser\Message\Factory\PartHeaderContainerFactory { ... }; protected ZBateson\MailMimeParser\Parser\Part\ParserPartChildrenContainerFactory $parserPartChildrenContainerFactory = class ZBateson\MailMimeParser\Parser\Part\ParserPartChildrenContainerFactory { ... } }; protected ZBateson\MailMimeParser\Parser\PartBuilderFactory $partBuilderFactory = class ZBateson\MailMimeParser\Parser\PartBuilderFactory {  }; protected ZBateson\MailMimeParser\Parser\ParserManagerService $parserManager = class ZBateson\MailMimeParser\Parser\ParserManagerService { protected array $parsers = [...] }; protected ZBateson\MailMimeParser\Message\Factory\PartHeaderContainerFactory $partHeaderContainerFactory = class ZBateson\MailMimeParser\Message\Factory\PartHeaderContainerFactory { protected Psr\Log\LoggerInterface $logger = class PsrExt\Log\NullLogger { ... }; protected ZBateson\MailMimeParser\Header\HeaderFactory $headerFactory = class ZBateson\MailMimeParser\Header\HeaderFactory { ... } }; protected ZBateson\MailMimeParser\Parser\HeaderParserService $headerParser = class ZBateson\MailMimeParser\Parser\HeaderParserService {  } }) /var/www/html/vendor/zbateson/mail-mime-parser/src/Parser/ParserManagerService.php:87
    0.8018    5145864  16. Composer\Autoload\ClassLoader->loadClass($class = 'ZBateson\\MailMimeParser\\Message') /var/www/html/vendor/zbateson/mail-mime-parser/src/Parser/Proxy/ParserMessageProxyFactory.php:60
    0.8021    5145992  17. {closure:/var/www/html/vendor/composer/ClassLoader.php:575-577}($file = '/var/www/html/vendor/composer/../zbateson/mail-mime-parser/src/Message.php') /var/www/html/vendor/composer/ClassLoader.php:427
    0.8028    5182720  18. include('/var/www/html/vendor/zbateson/mail-mime-parser/src/Message.php') /var/www/html/vendor/composer/ClassLoader.php:576
    0.8028    5182720  19. Composer\Autoload\ClassLoader->loadClass($class = 'ZBateson\\MailMimeParser\\Message\\MimePart') /var/www/html/vendor/zbateson/mail-mime-parser/src/Message.php:31
    0.8032    5182880  20. {closure:/var/www/html/vendor/composer/ClassLoader.php:575-577}($file = '/var/www/html/vendor/composer/../zbateson/mail-mime-parser/src/Message/MimePart.php') /var/www/html/vendor/composer/ClassLoader.php:427
    0.8039    5212904  21. include('/var/www/html/vendor/zbateson/mail-mime-parser/src/Message/MimePart.php') /var/www/html/vendor/composer/ClassLoader.php:576
    0.8039    5212904  22. Composer\Autoload\ClassLoader->loadClass($class = 'ZBateson\\MailMimeParser\\Message\\MultiPart') /var/www/html/vendor/zbateson/mail-mime-parser/src/Message/MimePart.php:25
    0.8042    5213064  23. {closure:/var/www/html/vendor/composer/ClassLoader.php:575-577}($file = '/var/www/html/vendor/composer/../zbateson/mail-mime-parser/src/Message/MultiPart.php') /var/www/html/vendor/composer/ClassLoader.php:427
    0.8049    5235944  24. include('/var/www/html/vendor/zbateson/mail-mime-parser/src/Message/MultiPart.php') /var/www/html/vendor/composer/ClassLoader.php:576
    0.8049    5235944  25. Composer\Autoload\ClassLoader->loadClass($class = 'ZBateson\\MailMimeParser\\Message\\MessagePart') /var/www/html/vendor/zbateson/mail-mime-parser/src/Message/MultiPart.php:22
    0.8052    5236104  26. {closure:/var/www/html/vendor/composer/ClassLoader.php:575-577}($file = '/var/www/html/vendor/composer/../zbateson/mail-mime-parser/src/Message/MessagePart.php') /var/www/html/vendor/composer/ClassLoader.php:427
    0.8060    5262944  27. include('/var/www/html/vendor/zbateson/mail-mime-parser/src/Message/MessagePart.php') /var/www/html/vendor/composer/ClassLoader.php:576
    0.8060    5265640  28. Composer\Autoload\ClassLoader->loadClass($class = 'ZBateson\\MailMimeParser\\Stream\\MessagePartStreamDecorator') /var/www/html/vendor/zbateson/mail-mime-parser/src/Message/MessagePart.php:25
    0.8063    5265800  29. {closure:/var/www/html/vendor/composer/ClassLoader.php:575-577}($file = '/var/www/html/vendor/composer/../zbateson/mail-mime-parser/src/Stream/MessagePartStreamDecorator.php') /var/www/html/vendor/composer/ClassLoader.php:427
    0.8069    5336984  30. include('/var/www/html/vendor/zbateson/mail-mime-parser/src/Stream/MessagePartStreamDecorator.php') /var/www/html/vendor/composer/ClassLoader.php:576

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions