ZEND_MOD_CONFLICTS doesn't work
Personne n'a encore pris cette issue.
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.2k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
When building PHP extension that has ZEND_MOD_CONFLICTS listed in its dependencies, the macro is ineffective when building shared extensions or when conflicting module is registered after such extension.
For example. Suppose we add the following hypothetical change to ext/ctype/ctyp.c (to mark the ext/curl extension as conflicting for the ext/ctype):
diff --git a/ext/ctype/ctype.c b/ext/ctype/ctype.c
--- a/ext/ctype/ctype.c
+++ b/ext/ctype/ctype.c
@@ -33,9 +33,15 @@ static PHP_MINFO_FUNCTION(ctype);
/* }}} */
+static const zend_module_dep ctype_deps[] = {
+ ZEND_MOD_CONFLICTS("curl")
+ ZEND_MOD_END
+};
+
/* {{{ ctype_module_entry */
zend_module_entry ctype_module_entry = {
- STANDARD_MODULE_HEADER,
+ STANDARD_MODULE_HEADER_EX, NULL,
+ ctype_deps,
"ctype",
ext_functions,
NULL,
(END)
Then building it with:
./buildconf
./configure --enable-ctype=shared --with-curl=shared
make
./sapi/cli/php -d extension_dir=modules -d extension=ctype -d extension=curl -m
Resulted in this output (here no warning is given):
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
...
[Zend Modules]
But I expected this output instead:
Warning: Cannot load module "ctype" because conflicting module "curl" is already loaded in Unknown on line 0
[PHP Modules]
Core
curl
date
dom
fileinfo
filter
...
[Zend Modules]
Unlike, when doing:
./sapi/cli/php -d extension_dir=modules -d extension=curl -d extension=ctype -m
the warning is displayed and extension is not loaded as it should be done.
PHP Version
All
Operating System
No response
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par ext/ctype/ctype.c et reproduisez le problème à l’aide des commandes de compilation et des ordres de chargement des extensions CLI fournis. Suivez la manière dont ZEND_MOD_CONFLICTS est géré lorsque ctype et curl sont chargés dans chaque ordre ; le travail est terminé lorsque l’extension en conflit est rejetée avec l’avertissement attendu dans les deux cas d’extensions partagées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- c, php
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100