2012-01-09 6 views
6

tôi đang làm việc trên một chương trình dòng lệnh trong PHP và tôi đang gặp khó khăn, vấn đề đầu tiên của tôi là khi tôi gọi PHP mkdir() nó đem lại cho tôi lỗi nàyPHP trên Windows

Warning: mkdir(): No such file or directory in 
E:\Server\_ImageOptimize\OptimizeImage.php 
on line 196 

sau đó tôi đọc trong tài liệu PHP nhận xét của người dùng cho biết rằng dấu gạch chéo chuyển tiếp / không hoạt động với phương pháp này trong Windows nhưng trên Unix.

Vì vậy, sau đó tôi đã thay đổi mã của mình để thay đổi chúng thành dấu gạch chéo ngược nhưng nó không thay đổi bất cứ điều gì đối với tôi, tôi vẫn gặp lỗi tương tự trên cùng một dòng.

Đây là đoạn mã dưới đây ai đó có thể giúp tôi con số này ra xin vui lòng

// I tried both of these below 
$tmp_path = '\tmp\e0bf7d6'; 
//$tmp_path = '/tmp/e0bf7d6'; 

echo $tmp_path; 

mkdir($tmp_path); 
+1

bạn không thể truy cập thư mục 'tmp' qua PHP. nắm tay bạn cần sử dụng 'move_uploaded_files()' – diEcho

+0

Bạn đã thử sử dụng getcwd() để xem từ nơi tập lệnh đang thực thi? Ngoài ra, tham số thứ ba của hàm cho phép tạo đệ quy. Vì vậy, nếu thư mục bạn đang cố gắng tạo ra có một thư mục cha không tồn tại (chưa) nó sẽ được tạo ra thay vì ném một lỗi. –

+0

Thử '[\\]' thay vì '[\]'. Có thể sửa vấn đề của bạn. – MahanGM

Trả lời

8

Vấn đề thực tế là mkdir() chỉ tạo ra một thư mục con cho mỗi cuộc gọi, nhưng bạn thông qua nó một con đường của hai thư mục không tồn tại. Bạn thường sẽ phải thực hiện bước này bước:

mkdir("/tmp"); 
mkdir("/tmp/e0b093u209"); 
mkdir("/tmp/e0b093u209/thirddir"); 

Hoặc sử dụng các phím tắt thông số thứ ba:

mkdir("/tmp/e0b093u209", 0777, TRUE); 
+0

Cảm ơn bạn điều này đã khiến tôi cảm thấy điên rồ, cảm ơn bạn cảm ơn bạn – CodeDevelopr

+0

Đáng buồn là tôi đã sử dụng đối số thứ 2 và thứ 3 và nó vẫn nói 'không có tệp hoặc thư mục nào như vậy' –

3

Tôi thường sử dụng dòng sau như một hằng số và tôi đặt trong một tập tin toàn cầu là được sử dụng thông qua trang web của tôi.

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

Điều đó sẽ khắc phục sự cố tách. Tôi cũng sẽ thử các thuộc tính đệ quy tìm thấy trong mkdir mà sẽ cho phép bạn thực hiện cấu trúc lồng nhau. Vui lòng xem foillowing, http://php.net/manual/en/function.mkdir.php

Bạn sẽ nhận thấy rằng bạn cần gọi mkdir như bên dưới.

mkdir ($path, $mode, true)