2011-11-17 35 views
7

Tôi đang di chuyển một trang web từ một máy chủ với WS2003, IIS6, PHP 5.2 qua một máy chủ với WS2008, IIS7 và PHP 5.3tập tin được tải lên được các chữ cái đầu tiên cắt đứt

Tôi có một hình thức html rằng cập nhật tệp vào trang web.

<?php 
if(isset($_POST["Upload"])){ 
    echo "<pre>"; 
    print_r($_POST); 
    print_r($_FILES); 
    echo "</pre>"; 
} 
?> 

<form action="tester.php" method="post" enctype="multipart/form-data"> 
    <input type="hidden" name="Upload" value="1" /> 
    <input type="hidden" name="MAX_FILE_SIZE" value="4500000" /> 
    <input type="file" name="artImage" id="artImage" /> 
    <input type="submit" /> 
</form> 

Hoạt động tốt trên máy chủ cũ, nhưng trên máy chủ mới, nó cắt bỏ chữ cái đầu tiên không có lý do gì tôi có thể thấy. Tôi không biết nếu nó là một thiết lập IIS, hoặc một thiết lập PHP.
Output:

Array 
(
    [Upload] => 1 
    [MAX_FILE_SIZE] => 4500000 
) 
Array 
(
    [artImage] => Array 
     (
      [name] => easons_Change_(HD_Ready).jpg 
      [type] => image/pjpeg 
      [tmp_name] => C:\Windows\Temp\php99.tmp 
      [error] => 0 
      [size] => 498879 
     ) 

) 

Output từ máy chủ cũ, cùng mã, cùng một tập tin:

Array 
(
    [Upload] => 1 
    [MAX_FILE_SIZE] => 4500000 
) 
Array 
(
    [artImage] => Array 
     (
      [name] => Seasons_Change_(HD_Ready).jpg 
      [type] => image/pjpeg 
      [tmp_name] => C:\WINDOWS\Temp\php6835.tmp 
      [error] => 0 
      [size] => 498879 
     ) 

) 
+0

Cố gắng xuất ra chỉ: 'echo $ _FILES [ 'artImage'] [ 'name']' – Neal

+2

@neal: đó muốn chỉ ra điều tương tự mà print_r/var_dump sẽ. –

+0

Điều đó sẽ giúp ích như thế nào? 'print_r' cho thấy trường đó tốt. – jli

Trả lời

5

này trông giống như lỗi bạn đang gặp $_FILES 'name' missing first character after upload.

Tôi gặp vấn đề tương tự.

+0

Vâng, nếu nó có liên quan đến 'magic_quotes' được kích hoạt. Phục vụ bạn ngay! ;) – PeeHaa

+0

Tôi đã bật báo giá phép thuật. Và nó được kích hoạt trên máy chủ cũ. PeeHaa, nếu tôi hỏi, có gì sai với dấu ngoặc kép? Tôi tò mò, nếu đó là điều mà tôi nên cố gắng loại bỏ. Nó được theo cách này trên trang web này kể từ khi tôi thừa hưởng nó, và tôi không bao giờ quan tâm đủ để muốn cố gắng để thoát khỏi nó. @cosmoba, do đó, là giải pháp cho việc này để cài đặt phiên bản beta của php? – AndyD273

+0

@ AndyD273: magic_quotes có thể được sử dụng để ngăn chặn tiêm sql mặc dù nó được coi là xấu (tôi cũng vậy, và tôi chắc chắn nhiều người sẽ đồng ý) vì nhiều lý do. Điều gì sẽ xảy ra khi tùy thuộc vào magic_quotes cho một dự án và some1 khác cài đặt dự án với dấu ngoặc kép ma thuật bị vô hiệu hóa? magic_quotes cũng làm công việc của nó trên các biến thậm chí không được sử dụng cho các giao dịch cơ sở dữ liệu (hiệu suất).Nếu some1 khác sử dụng máy chủ cho một dự án nó sẽ vít lên giá trị var dự kiến ​​của mình. vv Về cơ bản nó là 'bảo mật' (trong dấu ngoặc kép) cho những người không biết cách viết đúng mã bảo mật. – PeeHaa

1

Tôi gặp vấn đề tương tự và tìm kiếm nhiều nhưng đó là lỗi và tôi không biết tại sao! Nhưng tôi có giải pháp và nó hoạt động tốt. Chỉ cần đặt trước tên một tên trước tên tệp. Ví dụ:

'fileNamePrefix_' . $_FILES['file_name_attribute']['name'] 
+0

Bạn vẫn đang sử dụng PHP 5.3? Tôi đã thực sự thích PHP 7 trong một thời gian ngắn, vì vậy nếu bạn có khả năng nâng cấp, bạn có thể muốn xem xét nó. Nó có một số tính năng mới gọn gàng và rất nhiều bản sửa lỗi bảo mật kể từ 5.3 ... – AndyD273

+0

Có, tôi biết nhưng tôi không quen với PHP 7 vì tôi hơi bận. Cảm ơn bạn đã đánh giá. –

Các vấn đề liên quan