DSO - DIỄN ĐÀN SINH VIÊN ĐÀ LẠT

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

DIỄN ĐÀN SINH VIÊN ĐẠI HỌC ĐÀ LẠT


    Chế độ Safe Mode = On, bản chất và cách khắc phục

    thienthan
    thienthan
    Giám sát viên
    Giám sát viên


    Giới tính : Nữ
    Tổng số bài gửi : 739
    Tuổi : 34
    Cảm ơn : 251

    Chế độ Safe Mode = On, bản chất và cách khắc phục Empty Chế độ Safe Mode = On, bản chất và cách khắc phục

    Bài gửi by thienthan 2009-10-21, 18:14

    Chế độ Safe Mode = On, bản chất và cách khắc phục


    Safe Mode là gì?

    Safe Mode
    trong PHP (chế độ An toàn trong PHP): một kỹ thuật thường được Shared
    Hosting (Hosting Chia sẻ) áp dụng để tăng cường bảo mật (chống lại các
    tấn công nội bộ, thường được gọi là Hack Local). Kỹ thuật này không
    thực sự hoàn hảo ở mức PHP và cho đến thời điểm hiện tại nó vẫn được áp
    dụng ở nhiều nơi. Tuy nhiên, cũng thật may là kể từ phiên bản PHP 6.0
    tính năng này sẽ bị loại bỏ và chúng ta sẽ không còn phải bận tâm đến
    nó nữa.

    Xác định Safe Mode đang là On hay Off?

    Tạo một file info.php trong thư mục Web của bạn với nội dung như sau:

    Code:
    Code:
    <?php
              phpinfo();
            ?> 
    Mở đường dẫn tới file info.php. VD:
    Trích:
    [You must be registered and logged in to see this link.]

    Tìm mục "Loaded Configuration File" để biết file cấu hình php.ini được đặt ở đâu.
    Tìm mục "safe_mode"
    để biết trạng thái hiện tại của Safe Mode (On là bật, Off là tắt)

    Tắt chế độ Safe Mode?

    Trường hợp 1: Bạn có thể quản lý Server

    Xác định vị trí file cấu hình php.ini (xem ở bài trên), mở file và thiết lập giá trị


    Trích:

    safe_mode = Off


    Trường hợp 2: Bạn không phải là người quản lý Server

    Bạn có thể thử tắt nó bằng 1 trong 3 cách (với điều kiện Server cho phép ghi đè lên thiết lập ban đầu)

    - Cách 1 - Tạo một file ".htaccess" ở thư mục Web của bạn với chỉ thị:



    Trích:

    php_flag safe_mode off


    - Cách 2 - Tạo một file "php.ini" ở thư mục Web của bạn với chỉ thị:



    Trích:

    safe_mode = Off


    - Cách 3 - Dùng hàm ini_set của PHP: Đặt lệnh sau vào file cấu hình (chẳng hạn globals.php, configuration.php)

    Trích:

    ini_set('safe_mode','Off');



    Bản chất của Safe Mode.

    Giả sử bạn có một script: /home/vinaora/do_some_thing.php với nội dung
    Trích:
    // do job-1
    // do job-2
    // ....
    // do job-n
    ?>





    Với Safe Mode = On, khi bạn thực thi script do_some_thing.php ở trên, Server sẽ kiểm tra Owner (chủ sở hữu) của script do_some_thing.php là ai? VD: "vinaora" hay "apache" hay "user-xyz" nào đó.

    Nếu trong công việc "job-x" có 1 phép xử lý liên quan tới file hay thư mục nào đó (thư mục /opt/lampp/tmp chẳng hạn), mà file hay thư mục này lại thuộc quyền sở hữu của 1 Owner khác), lỗi sẽ xảy ra.

    Ngoài ra khi Safe Mode = On thì có thể rất nhiều hàm đã bị vô hiệu hóa.
    VD: move_uploaded_file(), mkdir()... Do vậy, nếu trong script *.php của
    bạn có sử dụng 1 trong các hàm trên, lỗi cũng xảy ra.

    Danh sách các hàm bị vô hiệu hóa: [You must be registered and logged in to see this link.] ... ctions.php

    VD: Safe Mode = On ảnh hưởng tới việc cài đặt Joomla

    Khi bạn cài đặt một module/component/plugin/template trên Joomla, Joomla sẽ thực hiện các công việc sau:

    (1) Upload gói cài đặt (*.zip) tới thư mục tạm của Webserver, chẳng
    hạn: /opt/lampp/tmp (biết bằng tham số "upload_tmp_dir" thông qua file
    info.php đã nói ở trên)

    (2) Giải nén gói cài đặt: Tương ứng với việc tạo các thư mục, và file
    (theo hướng dẫn mà file .xml trong gói cài đặt .zip đã chỉ ra)

    (3) Chuyển các thư mục và file đã giải nén ở trên tới các vị trí thích hợp trong thư mục Web Joomla của bạn.
    Lỗi có thể xảy ra vì Owner của các file trên Joomla và Owner của thư mục /opt/lampp/tmp khác nhau.
    Lưu ý: Safe Mode có thể thiết lập việc kiểm tra với Owner (UID) hoặc Group Owner (GID)

      Hôm nay: 2024-05-07, 03:50