web-dev-qa-db-fra.com

Les changements de taille maximale de téléchargement dans le fichier php.ini sont ignorés - Comment supprimer la limite de taille de téléchargement?

Je travaille sur une installation multisite WP et je dois importer du contenu à partir d'autres sites Wordpress (fichiers .wxr). Quand j’utilise le plugin Import WordPress, j’obtiens ce qui suit:

enter image description here

La taille de téléchargement maximale autorisée est uniquement 1MB, alors que j'ai défini 100MB dans mon php.ini. Un appel à phpinfo() indique que les .ini valeurs devraient s'appliquent:

enter image description here

Quel est le problème là-bas? J'ai lu la plupart des résultats de la recherche pour upload_max_filesize sur ce site , mais aucun ne fonctionne.

Note: Cela ne se produit qu'avec Wordpress. J'ai des sites Symfony2 et je peux télécharger des fichiers d'une taille de 100 Mo et plus - alors oui, c'est le bon paramètre php.ini et le serveur Apache les applique correctement.

Écrire MU Wordpress Plugin

Après @kaiser suggestion j'ai créé un fichier /wp-content/mu-plugins/uploadSizeLimit.php et l'ai écrit dessus:

/** Plugin Name: (WPSE) #177620 Alter Upload Size Limit */
add_filter(
    'upload_size_limit',
    function ( $limit = 0, $u_bytes = 0, $p_bytes = 0 ) {
        return 
               current_user_can( 'manage_options' ) 
               ? 1024 * 1024 * 10 // Divert by 1024 to get the value in kB
               : $limit;
    }
);

Comment puis-je l'utiliser pour réaliser ce dont j'ai besoin?

2
ReynierPM

Merci @kaiser mais pas besoin de passer par votre solution, j'ai trouvé une solution facile que je partagerai ici car les débutants m'aiment bien.

Si vous travaillez sur un WP site réseau, les étapes sont les suivantes:

  1. En haut, survolez Mes sites, puis cliquez sur Administrateur du réseau.
  2. Sur la gauche, survolez Paramètres, puis cliquez sur Paramètres du réseau.
  3. Faites défiler vers le bas de la page et modifiez la taille maximale du fichier de téléchargement pour obtenir ce que vous souhaitez en Ko.
  4. Cliquez sur Enregistrer les modifications.

En définissant cette valeur sur 500000, j'ai obtenu 500M en tant que téléchargement max_file_size. Credits est pour l'utilisateur ici

5
ReynierPM

Il existe un filtre nommé 'upload_size_limit' où vous devriez pouvoir modifier la valeur. Ajoutez simplement un petit plugin mu pour ce travail:

<?php
/** Plugin Name: (WPSE) #177620 Alter Upload Size Limit */
add_filter( 'upload_size_limit', function( $limit = 0, $u_bytes = 0, $p_bytes = 0 )
{
    return (
        in_array( get_current_screen()->base, array( /* Add Screen "base"s here */ )
        and current_user_can( 'manage_options' )
    )
        ? 1024 * 1024 * 10 // Divert by 1024 to get the value in kB
        : $limit;
} );

Comme vous pouvez le constater, je recherche également une propriété get_current_screen()s nommée base. Vous pouvez également rechercher différentes propriétés, mais veillez à limiter le nombre d'écrans pour lesquels la suppression/modification de la limite par défaut s'applique aux écrans où vous en avez réellement besoin.

1
kaiser