Nadie parece haber trabajado con lo que es y eso es una lástima, así que así es como lo manejé ...
Historia / antecedentes
Creé un cargador de SVG en 2015 basado en un artículo de CSS-Tricks que analizaba lo que era. También conseguí que la cuadrícula funcionara para la vista previa de la imagen, y usé algunas otras correcciones. Complemento simple (los complementos de tipo de archivo IMO deben ser simples)
Solución
Hubo algunos cambios para 4.7. El verdadero PITA era que para los image/
tipos mime WP ahora está usando GD en las imágenes. Para omitir esto, configuré la svg
extensión para usar application/svg+xml
para que GD no se meta con el archivo.
Actualización: a partir de 4.7.2, una chispa brillante también se rompió en algunos casos
Luego, a través de un gancho, lo conectamos nuevamente image/svg+xml
. Es el mismo que se usa en otras respuestas, pero primero lo bloqueamos a nuestro caso específico para eliminar los efectos (es un archivo SVG); podemos confiar en la lectura $data['ext']
(debería ser más barato que la función para obtener información del archivo como solo una comparación y un acceso de matriz / hash).
Actualización: a partir de 4.7.2 $data['ext']
no siempre se establece, por lo que ahora si su longitud es <1 extracción (potencialmente insegura) extensión del nombre de archivo usando
strtolower(end(explode('.', $filename)))
. La razón por la que realmente estoy luchando con FileInfo es que, esencialmente, confiar en una extensión de PHP es demasiado opaco y no siempre funcionará para todos (especialmente para aquellos que compilan sin o sin acceso para habilitar extensiones si no está allí). Me gustaría algo que funcione en lugar de una extensión. Ya no se trata de tener la información correcta, por lo que para aquellos que confían en la salida FileInfo
y tienen la extensión (creo que es predeterminada en 5.6+) debería funcionar. Además, debido a que es un complemento, no está modificando el núcleo, puede desactivar este código o anular el registro del gancho.
https://github.com/Lewiscowles1986/WordPressSVGPlugin
Ver
Otras soluciones
Permitir cargas no filtradas es una solución horrible porque, como otros han dicho, vincular a este hilo la gente podría subir archivos php a través del cargador de medios (eso es malo y si lo haces, ¡deberías detenerte y pensar!)
Forzar cada archivo a través de cualquier función sin controles (Irónicamente, si tiene image/
el tipo mime, no puede tener un simple control de extensión). Esto tiene el potencial de crear efectos de alcance mucho más amplio para resolver un problema relativamente nicho e introduce más trabajo en general (advertencia mi plugin también introduce más trabajo para que los usuarios administradores obtengan la interfaz de usuario de medios de administración para trabajar)
Si dejáramos el mime como application / svg + xml y simplemente filtramos los tipos de mime, la imagen se cargaría, pero AFAIK requeriría soluciones para usarlas como imagen destacada, etc. para elegir batallas con cuidado.
Espero que esto ayude.
define( 'ALLOW_UNFILTERED_UPLOADS', true );
awp-config.php
. Esto no es seguro para la producción.