php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #77609 Tests from mailparse extension fails
Submitted: 2019-02-12 22:18 UTC Modified: 2019-03-20 08:52 UTC
Votes:1
Avg. Score:3.0 ± 0.0
Reproduced:0 of 0 (0.0%)
From: ralf dot habacker at freenet dot de Assigned:
Status: Closed Package: *Mail Related
PHP Version: Irrelevant OS: linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: ralf dot habacker at freenet dot de
New email:
PHP Version: OS:

 

 [2019-02-12 22:18 UTC] ralf dot habacker at freenet dot de
Description:
------------
Running tests from mailparse extensions are skipped because a run time dependency is missing.

Build complete.
Don't forget to run 'make test'.

make test
PHP Warning:  Cannot load module 'mailparse' because required module 'mbstring' is not loaded in Unknown on line 0
PHP Warning:  Cannot load module 'mailparse' because required module 'mbstring' is not loaded in Unknown on line 0

PHP_SAPI    : cli
PHP_VERSION : 7.0.7
ZEND_VERSION: 3.0.0
PHP_OS      : Linux - Linux bramsche.habacker.de 4.4.165-81-default #1 SMP Mon Dec 3 07:47:23 UTC 2018 (0bfc9ed) x86_64
INI actual  : /home/ralf/src/pecl-mail-mailparse-build/tmp-php.ini
More .INIs  :   
CWD         : /home/ralf/src/pecl-mail-mailparse
Extra dirs  : 
VALGRIND    : Not used
=====================================================================
TIME START 2019-02-12 22:02:15
=====================================================================
SKIP Check for mailparse presence [tests/001.phpt] 
SKIP Check stream encoding [tests/002.phpt] 
SKIP Check handling of multiple To headers [tests/003.phpt] 
SKIP Check uudecode_all [tests/004.phpt] 
SKIP Check quoted-printable encoding generates S/MIME safe content [tests/005.phpt] 
SKIP Check extract_part_file [tests/006.phpt] 
SKIP Check RFC822 Conformance [tests/007.phpt] 
SKIP OO API Segfault when opening a file is not possible [tests/008.phpt] 
SKIP Multiple UUE attachments not recognized [tests/009.phpt] 
SKIP Multiple headers not parsed into arra bug #6862 [tests/010.phpt] 
SKIP Check mailparse_determine_best_xfer_encoding [tests/011.phpt] 
SKIP Check mailparse_mimemessage_extract_uue [tests/012.phpt] 
SKIP Check mailparse_mimemessage_extract_uue [tests/013.phpt] 
SKIP mailparse_msg_free causes double free segfault [tests/bug001.phpt] 
SKIP Parse messages in testdata dir [tests/parse_test_messages.phpt] 
=====================================================================
TIME END 2019-02-12 22:02:16



Expected result:
----------------
The tests should should find the required mbstring extension

Actual result:
--------------
The tests could not be started because a required dependency is missing.

Patches

Add a Patch

Pull Requests

Pull requests:

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2019-02-12 22:32 UTC] requinix@php.net
-Status: Open +Status: Feedback
 [2019-02-12 22:32 UTC] requinix@php.net
Maybe I'm missing something important, but did you actually build PHP with mbstring support? Does php -m list mbstring?
 [2019-02-12 23:56 UTC] ralf dot habacker at freenet dot de
-Status: Feedback +Status: Open
 [2019-02-12 23:56 UTC] ralf dot habacker at freenet dot de
> Maybe I'm missing something important, but did you actually build PHP with mbstring support? 
yes
> Does php -m list mbstring?
yes

The problem is that running 'make test' in a phpize'd build creates a custom php ini file not including the installed extensions. In principal there is code to include installed php related config files (see https://github.com/php/php-src/blob/master/Makefile.global#L99), but extensions are excluded by PHP_DEPRECATED_DIRECTIVES_REGEX, which is 

Makefile:130:PHP_DEPRECATED_DIRECTIVES_REGEX = '^(magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*='
 [2019-02-12 23:59 UTC] ralf dot habacker at freenet dot de
The definition of PHP_DEPRECATED_DIRECTIVES_REGEX is https://github.com/php/php-src/blob/6e3600f41b95d97d11ef48f817e6389a4ee95091/Makefile.global#L86
 [2019-02-13 00:15 UTC] ralf dot habacker at freenet dot de
> PHP_DEPRECATED_DIRECTIVES_REGEX = '^(magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*='

Was the intention perhaps to exclude (zend_extension|extension_debug)?

Changing this lead to the next issue:

 At https://github.com/php/php-src/blob/dd8e59da8f5aafd9d77a0f1f17e5e272d09f643f/Makefile.global#L100 there is php called with -d extension_dir=.. expecting installed extensions in a local build dir.

Running make test now returns

Warning: PHP Startup: Unable to load dynamic library '/home/ralf/src/pecl-mail-mailparse-build/modules/pdo.so' - /home/ralf/src/pecl-mail-mailparse-build/modules/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
 [2019-02-28 22:46 UTC] petk@php.net
The following pull request has been associated:

Patch Name: Add installed php extensions to temporary created ini file
On GitHub:  https://github.com/php/php-src/pull/3898
Patch:      https://github.com/php/php-src/pull/3898.patch
 [2019-03-01 21:46 UTC] petk@php.net
Automatic comment on behalf of ralf.habacker@freenet.de
Revision: http://git.php.net/?p=php-src.git;a=commit;h=3ead67239419632eecb83f0f101ead2021ee6c14
Log: Fix #77609: Tests from mailparse extension fails
 [2019-03-01 21:46 UTC] petk@php.net
-Status: Open +Status: Closed
 [2019-03-20 08:52 UTC] remi@php.net
-Status: Closed +Status: Re-Opened
 [2019-03-20 08:52 UTC] remi@php.net
re-opened as current fix breaks everything.
See comment on https://github.com/php/php-src/commit/3ead67239419632eecb83f0f101ead2021ee6c14
 [2019-03-20 10:56 UTC] remi@php.net
Automatic comment on behalf of remi
Revision: http://git.php.net/?p=php-src.git;a=commit;h=32e7b0864ca1e5094ecea73641c4dc87bcdaa684
Log: Revert "Fix #77609: Tests from mailparse extension fails"
 [2019-03-20 10:56 UTC] remi@php.net
-Status: Re-Opened +Status: Closed
 [2019-03-20 11:22 UTC] remi@php.net
Automatic comment on behalf of remi
Revision: http://git.php.net/?p=php-src.git;a=commit;h=eb279fdb16405acc55ac9376b2dc109e1eda865c
Log: Revert "Fix #77609: Tests from mailparse extension fails"
 [2019-03-20 15:12 UTC] cmb@php.net
Automatic comment on behalf of cmbecker69@gmx.de
Revision: http://git.php.net/?p=php-src.git;a=commit;h=5b7a781a5d49854d9e3abf7944b478d0d98d6c5e
Log: Revert "Fix #77609: Tests from mailparse extension fails"
 [2019-03-21 13:39 UTC] remi@php.net
The proper way to loaded shared dependent extension is to use the --EXTENSIONS-- section in phpt files.

Ok, this have some issues with load order, especially when PHP is built with RTLD_NOW (common option on Linux distribution)

So another working way is to define TEST_PHP_ARGS in the environment before running the test suite

Example:

export TEST_PHP_EXECUTABLE=$(which php)
export TEST_PHP_ARGS="-n -d extension=mbstring.so -d extension=modules/mailparse.so"
php run-tests.php --show-diff


So I think it is better to keep current situation, and don't try to fix a not real issue.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Mar 28 13:01:28 2024 UTC