ZEND_MOD_CONFLICTS doesn't work
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C
- Estrellas
- 40.4k
- Forks
- 8.2k
- Merge medio
- 2 d 13 h
- PR fusionados (30 d)
- 96
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza con ext/ctype/ctype.c y reproduce el problema usando los comandos de compilación y los órdenes de carga de extensiones de CLI proporcionados. Traza cómo se gestiona ZEND_MOD_CONFLICTS cuando ctype y curl se cargan en cada orden; se considera terminado cuando la extensión en conflicto es rechazada con la advertencia esperada en ambos casos de extensiones compartidas.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- c, php
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100