2013-03-12 58 views
7

Tôi đang cố gắng bật tiện ích mở rộng .zip trong PHP, nhưng hàm bên dưới trả về false.Bật tiện ích mở rộng zip cho PHP

if (!extension_loaded('zip')) { 
    return false; 
} 

Làm cách nào để bật tiện ích mở rộng .zip bằng cách sử dụng php.ini?

Có thể bật sử dụng ini_set() không?

+0

OS của bạn là gì? –

+0

là có một số ZIP của một số mô tả được liệt kê khi bạn thực hiện một __phpinfo(); __ – Waygood

+0

Có triển khai phần mở rộng của người dùng trong miền. Mặc dù API thường bị lệch. – mario

Trả lời

2

Miễn là bạn có sẵn phần mở rộng ZIP trên máy chủ, bạn có thể sử dụng dl() để tải động (< 5.3).

if (!extension_loaded('zip')) { 
    // Attempt to load the zip 
    $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : ''; 
    dl($prefix . 'zip.' . PHP_SHLIB_SUFFIX); 

    if (!extension_loaded('zip')) { 
     // Couldn't load the ZIP module dynamically, either 
     return false; 
    } 
} 

Nếu bạn đang sử dụng một phiên bản trên 5.3.0, bạn sẽ không thể sử dụng dl trừ khi nó đang chạy trên dòng lệnh hoặc nhúng vào một máy chủ web.

Tùy chọn duy nhất của bạn là sửa đổi php.ini nếu bạn không thể biên dịch lại với mô đun được tích hợp sẵn trong PHP. Bạn không thể làm điều này bằng cách sử dụng ini_set, vì điều đó sẽ chỉ được áp dụng khi chạy trong khi tất cả các mô-đun bắt buộc sẽ được tải bởi tệp thi hành PHP lúc khởi động.

+1

Chức năng này đã bị xóa khỏi một số SAPI trong PHP 5.3. –

+0

dl sẽ không được kích hoạt trong một số trường hợp trong php5.4, vì vậy tốt hơn nên biên dịch lại php bằng --enable-gzip –

+1

Ông đã tuyên bố rõ ràng rằng mình không muốn sử dụng 'php.ini'. Nếu anh ta không thể sử dụng nó, bạn có thực sự nghĩ anh ta có thể biên dịch lại không? –

1

Sử dụng này,

if (!extension_loaded('zip')) 
{ 
    $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : ''; 
    dl($prefix . 'zip.' . PHP_SHLIB_SUFFIX); 
    if (!extension_loaded('zip')) 
    { 
     return false; 
    } 
} 
+1

Nó trông giống như ở trên. Tôi không thể thấy bất kỳ sự khác biệt nào ... – asitha

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