10/10/2018, 11:30

Thắc mắc về lập trình php trong linux.

Các cao nhân cho em hỏi xíu. Có gì gà quá thì lượng thứ cho nha. Tình hình là em đang học php nhưng vì vài lý do phải chạy trong môi trường linux. Em dùng hàm is_file($tentaptin) để kiểm tra xem tập tin có tồn tại chưa. Chạy bên wins thì ok. Nhưng sao chạy trên linux nó lúc nào cũng báo ko tồn tại trong khi rõ ràng em đã cố tình tạo tập tin đó để test mà. Mấy cao nhân giải thích giùm em nhá. )
herofit viết 13:36 ngày 10/10/2018
bạn kiểm tra lại $tentaptin xem có thể do chữ hoa chữ thường
ngoc_viet08 viết 13:32 ngày 10/10/2018
linux và window khác nhau ở dấu phân cách thư mục.

ở window là dấu \ , còn bên linux là dấu /

để giải quyết vấn đề này thì php đưa ra DIRECTORY_SEPARATOR . bạn cần config nó và sử dụng nó thay cho cả \ và / . ví dụ

//config directory
define( 'DS', DIRECTORY_SEPARATOR );
define( 'DS', D );
define('SITE_PATH', dirname(__FILE__) . DS);
define('ADMIN_PATH', SITE_PATH . 'admin' . DS);
maddox viết 13:34 ngày 10/10/2018
Thank các cao nhân lắm lắm nhưng giờ mình lại có một vấn đề mới cần hỏi. Mình muốn đọc nội dung trong file đó vào một chuỗi. Mình sử dụng hàm file($tentaptin) thì bị báo lỗi thế này mấy cao nhân xem giùm mình nhé.
Warning: file(/var/lib/phpfwgen/netobjects) [function.file]: failed to open stream: Permission denied in /opt/lampp/htdocs/xampp/demo.php on line 4
Có phải nó báo mình ko có đủ quyền với file đó ko? Mình đăng nhập vào root rồi mà. hix
herofit viết 13:35 ngày 10/10/2018
khi chạy process php chạy thường khi cài mặc định nó chạy với user là apache vì vậy bạn cần Chmod 755 hay 777 cho file đó thì ok
Được gửi bởi maddox
Thank các cao nhân lắm lắm nhưng giờ mình lại có một vấn đề mới cần hỏi. Mình muốn đọc nội dung trong file đó vào một chuỗi. Mình sử dụng hàm file($tentaptin) thì bị báo lỗi thế này mấy cao nhân xem giùm mình nhé.
Warning: file(/var/lib/phpfwgen/netobjects) [function.file]: failed to open stream: Permission denied in /opt/lampp/htdocs/xampp/demo.php on line 4
Có phải nó báo mình ko có đủ quyền với file đó ko? Mình đăng nhập vào root rồi mà. hix
ngoc_viet08 viết 13:32 ngày 10/10/2018
chmod ko hẳn đã hoạt động tốt trên 1 số os, như window 7 chmod ko làm việc hoàn hảo nếu admin ko config lại window
sonnb viết 13:31 ngày 10/10/2018
Read thì 644 là đủ rồi. Tốt nhất là bạn chown -R apache:apache cho cái thư mục đó. Đỡ phải set quyền cho nó phiền.
herofit viết 13:46 ngày 10/10/2018
bận ấy đang thắc mắc trên linux
Được gửi bởi ngoc_viet08
chmod ko hẳn đã hoạt động tốt trên 1 số os, như window 7 chmod ko làm việc hoàn hảo nếu admin ko config lại window
maddox viết 13:38 ngày 10/10/2018
Vấn đề đó mình ok rồi lại thắc mắc thêm một điều. Nghe nói mấy cái phân quyền trên linux rất là quan trọng mà mình thiết lập chmod thành 777 hết thì có làm sao ko? À mình chạy trên wins thì thấy có câu lệnh là fopen($tentaptin,"x"); nếu tập tin đó chưa tồn tại thì tự động tạo luôn. Nhưng lại không chạy được câu lệnh này bên linux. Vậy mấy cao nhân cho mình hỏi nếu cũng muốn mở một tập tin mà ko có sẵn thì tự động tạo ra tập tin đó bên linux thì làm sao nhỉ? Mình cũng ko phân biệt được giữa hàm fopen() với popen(). Đọc tài liệu tiếng anh ko hiểu lắm. Lâu lâu mới mò lên mạng một lần hỏi cho đã luôn mong mấy cao nhân giải đáp giùm mình. Thanks nhiều nhiều.
herofit viết 13:41 ngày 10/10/2018
chmod rất quan trọng nó giúp site của bản an toàn hơn khi bạn dùng share host

tìm hiểu về chmod và ý nghĩa 777 bạnxem tại đây


Được gửi bởi maddox
Vấn đề đó mình ok rồi lại thắc mắc thêm một điều. Nghe nói mấy cái phân quyền trên linux rất là quan trọng mà mình thiết lập chmod thành 777 hết thì có làm sao ko? À mình chạy trên wins thì thấy có câu lệnh là fopen($tentaptin,"x"); nếu tập tin đó chưa tồn tại thì tự động tạo luôn. Nhưng lại không chạy được câu lệnh này bên linux. Vậy mấy cao nhân cho mình hỏi nếu cũng muốn mở một tập tin mà ko có sẵn thì tự động tạo ra tập tin đó bên linux thì làm sao nhỉ? Mình cũng ko phân biệt được giữa hàm fopen() với popen(). Đọc tài liệu tiếng anh ko hiểu lắm. Lâu lâu mới mò lên mạng một lần hỏi cho đã luôn mong mấy cao nhân giải đáp giùm mình. Thanks nhiều nhiều.
Bài liên quan
0