2009-08-24 4 views
1

환경 정보와 폴더를 만들 수 없습니다 :
* 윈도우 비스타
* PHP 5.2.9-2이 MKDIR

내가 프로젝트에서 일하고 있어요. 단순히 "프로젝트"라는 이름이라고합시다. 사용자 상호 작용을 의미 내 PHP 파일 나는 이것과 일반적으로 클래스와 구성 파일이 포함 된 일부지도, 뒤에 데이터베이스가 지금

프로젝트/file.php

에서 찾을 수 있습니다. 사용자가 업로드 할 수있는 이미지를 저장하는지도가 있습니다. 예를 들어 :

프로젝트/파일/사용자/0/profilePic.jpg

수는 데이터베이스의 USER_ID에 해당합니다.

register.php 파일은 코드 행이 포함

mkdir('/files/Users/'.$id) 

$id 변수가 가장 큰 아이디 데이터베이스의 수에 1을 더한

이를하지만 작동하지 않습니다. 나는 폴더를 검사하고, 읽기와 쓰기 권한을 가지고있다. (나는 나의 컴퓨터에 관리자 임).

내가 뭘 잘못하고 있니?

참고 : 나에게 도움이되는 답변을 줄 수있는 사람들에게이 책자를 정리하는 더 좋은 방법이 있음을 알릴 권리. : P

답변

7

어떨까요? 가능성의

mkdir('c:/files/Users/'.$id) 
+0

글쎄, 그 트릭을 했는데도 문제가 남아 있습니다. 왜 이전 코드가 작동하지 않았습니까? – KdgDev

+1

안녕하세요, Windows에서 드라이브 문자를 지정해야 시스템에서 아무런 가정을하지 않습니다. –

+1

"/ files/Users /"경로가 php + windows에 존재하지 않기 때문에 왜 작동하지 않았는가? 시작 슬래시는 절대 경로를 나타내며 Windows에는 존재하지 않습니다. 상대 경로를 원하면 첫 번째 슬래시를 버리십시오. – Henri

2

커플 : 그 절대 경로를 제공하고 상대 경로를 만들기 위해 찾고 있기 때문에

  1. 은/첫 패 - 그래서 MKDIR ('파일/사용자 /'.$ id)
  2. 파일/사용자가 이미 존재합니까 (즉, 이미 사용자 0, 사용자 1 등이 있습니까?)? 그렇지 않다면, mkdir ('files/Users/'.$ id, 077, true)을 반복적으로 만들어 디렉토리를 만들어야합니다.
+0

'파일/사용자'가 이미 있습니다. 모든 사용자가 이미 존재합니다 (데이터베이스 관리를 위해 phpMyAdmin 사용) – KdgDev

+0

상대 경로 대 절대 ​​경로입니다. – KdgDev

1

Windows에서 경로는 '/'로 시작하지 않고 드라이브 문자로 시작합니다. 첫 번째 슬래시 만 제거하면됩니다 ('/ files/users /'는 'files/users /'가됩니다).

더 나아가, 마크는 말했습니다.

0

PHP는/between 시스템을 변환 할 때 최선의 노력을한다고 말합니다. 수행함으로써 :

mkdir('/files/users'); 

PHP가 * NIX 시스템에 있다고 생각하면 혼란 스럽습니다. 루트를 c :로 설정하면 이제는 매개 변수를 올바르게 구문 분석하여 그것이 Windows 시스템임을 추론 할 수있었습니다.

+0

그래서 PHP는 실행중인 시스템의 종류를 탐지하지 못하지만 mkdir에 전달한 인수를 기반으로 추측을 시도합니까? – Stewart

+0

간단한 대답은 예입니다. OS가 시스템을 준수한 이후에 실행중인 OS를 이미 알고 있습니다. – MANCHUCK

관련 문제