Przesył plików

1

Cześć,
mam pewien problem z przesylaniem plików. A mianowicie dla plików powyżej 2MB skrypt się nie wykonuje, chociaż w PHP.INI mam ustawiony rozmiar na prawie 40MB. Problem występuje na hostingu nazwa.pl

2

Możliwe, że nazwa ma swój własny limit i tyle. Użyj ini_get, żeby sprawdzić faktyczny rozmiar podczas wykonywania skryptu.

2

Cześć,

Mam jakiś skrypt o jakiejś zawartości, który w jakiś sposób wrzuca pliki na mój serwer, lecz niestety podczas próby wrzucenia większych plików występuje jakiś problem.

tl;dr wrzuć więcej informacji

2

Samochod mi nie dziala. Jak mam go naprawic

1

A przepraszam, rzeczywiście zbyt słabo opisałem problem.
Problem jest taki że na lokalnym serwerze skrypt działał prawidłowo, ale po wrzuceniu na hosting działa tylko dla plików ~500kb, dla większych się nie wykonuje. Mimo tego, że dołączyłem plik php.ini ciągle nie mogę przesyłać większych plików.

php.ini dotyczące plików

upload_max_filesize = 40M
post_max_size = 40M
error_log = /plik_logow.log
error_reporting =  E_ALL & ~E_NOTICE
log_errors = 1
display_errors = off

skrypt

                                if (isset($_FILES['upload'])) {
                                
                                    $total = count($_FILES['upload']['name']);

                                    $ileplk = 0;

                                    for( $i=0 ; $i < $total ; $i++ ) {


                                        $allowed = array ('image/pjpeg', 'image/jpeg', 'image/JPG', 'image/X-PNG', 'image/PNG', 'image/png', 'image/x-png');
                                        
                                        
                                        $x = explode("/", $_FILES['upload']['type'][$i]);                        
                                        
                                        if (in_array($_FILES['upload']['type'][$i], $allowed)){
                                            
                                            if(!file_exists("uploads/".$_SESSION['user'])){
                                            
                                                mkdir("uploads/".$_SESSION['user'], 0700);    
                                                
                                            }
                                                
                                            $ph = "uploads/".$_SESSION['user']."/".date('m-y');
                                            
                                            if(!file_exists($ph)){
                                                
                                                mkdir($ph, 0700);
                                                
                                            }
                                            
                                        
                                            $tmpFilePath = $_FILES['upload']['tmp_name'][$i];

                                            if ($tmpFilePath != ""){
                                                
                                            //$x = date("Y-m-d_h:i:sa").$_FILES['upload']['name'][$i];    
                                                
                                            $newFilePath = "./".$ph."/".md5(microtime()).'.'.$x[1];

                                                if(move_uploaded_file($tmpFilePath, $newFilePath)) {


                                                    $data = [
                                                        'id' => $_POST['aptek'],
                                                        'scr' => $newFilePath,
                                                    ];
                                                    $sql = "INSERT INTO dokum (id, dkm) VALUES (:id, :scr)";
                                                    $stmt= $pdo->prepare($sql);
                                                    $stmt->execute($data);
                                                        
                                                    $stmt = $pdo->prepare("UPDATE zlc SET plik = 1 WHERE idzl = :id");
                                                    $id = $_POST['aptek'];                                                    
                                                    $stmt->bindParam(":id", $id, PDO::PARAM_INT);
                                                    
                                                    $stmt->execute();
                                                    
                                                        
                                                    $ileplk++;

                                                }
                                                
                                            }
                                                
                                            $_SESSION['bldp2'] = 0;
                                            $_SESSION['bld2'] = "<p class='aler'>Przesłano: ".$ileplk." plików</p>"; 
                                            $_SESSION['ale2'] = "alert-success";     
                                       
                                        }
                                        else{
                                            $_SESSION['bldp2'] = 0; 
                                            $_SESSION['bld2'] = "<p class='aler'>Nie przesłano</p>";
                                            $_SESSION['ale2'] = "alert-danger";
                                        }

                                    }       
                                       
                                
                                }

na dodatek ini_get('post_max_size') pokazuje 64M

Edit:

Oczywiście panie z nazwy powiedziała mi że nie ma żadnych limitów

Edit:
$_FILLES['error'] zwraca 1, czyli za mały fille_max_input, ale według ini_get powinien być wystarczający

1
Miop napisał(a):

A przepraszam, rzeczywiście zbyt słabo opisałem problem.
Problem jest taki że na lokalnym serwerze skrypt działał prawidłowo, ale po wrzuceniu na hosting działa tylko dla plików ~500kb, dla większych się nie wykonuje. Mimo tego, że dołączyłem plik php.ini ciągle nie mogę przesyłać większych plików.

W jaki sposób go "dołączyłeś"???

Miop napisał(a):

php.ini dotyczące plików

upload_max_filesize = 40M
post_max_size = 40M
error_log = /plik_logow.log
error_reporting =  E_ALL & ~E_NOTICE
log_errors = 1
display_errors = off
Miop napisał(a):

na dodatek ini_get('post_max_size') pokazuje 64M

Czyli go nie dołączyłeś. A druga sprawa to interesuje Cię upload_max_filesize

2

Problem rozwiązany (pomogło ponowne napisanie skryptu od podstaw).
Temat do zamknięcia

2

Mógłbyś w takim razie wrzucić ten działający skrypt. Być może przyda się komuś w przyszłości, kto będzie miał podobny problem.
Jeśli wiesz też, na czym polegał problem i z czego wynikał - taka informacja także będzie mile widziana :)

2
Miop napisał(a):

Problem rozwiązany (pomogło ponowne napisanie skryptu od podstaw).
Temat do zamknięcia

To teraz miej wzgląd na resztę ludzkości i opisz rzeczywistą naturę problemu wraz ze sposobem jego rozwiązania.
Bo może ktoś za 10 lat wygugla ten wątek i przeklnie cię za egoizm ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1