현재 위치에서 파일을 특정 디렉토리에 카피를 하려는데 경로를 못찾습니다.
CMS/프레임워크 | 사용안함 |
---|---|
개발 언어 | PHP 7.2 |
Warning: copy(var/www/html/files/attach/sub/1019/99.jpg)
일단 디렉토리 생성 자체부터 문제가 생겨서 디랙토리는 수동으로 생성해 주고 거기에 파일을 저장하려고 하는데 경로를 못찾네요.
$name 에 경로와 파일명까지 다 담아서 아래 copy 함수에 넣은 건데요.
현재 파일이 실행되는 경로를 찍어보면
/var/www/html 로 찍힙니다.
$name="./files/attach/~"
$name="var/www/html/files/attach/~"
$name="./var/www/html/files/attach/~"
$name="/var/www/html/files/attach/~"
전부 해봐도 다 경로를 찾지 못하는 에러가 나는데요. 경로 지정을 어떻게...
copy($url, $name);
댓글 13
_XE_PATH_. 로 붙여줬더니 일단 경로 문제는 해결 된 듯 합니다.
그리고 가능하면 그냥 copy 함수를 사용하지 마시고
FileHandler나 Rhymix\Framework\Storage 클래스를 사용하세요.
상위 폴더 생성, 이후 재수정하거나 삭제할 경우에 대비한 퍼미션 조정까지 자동으로 해줍니다.
그 밖에 move, delete 등 일반적으로 파일 관리에 사용할 만한 함수들은 다 있고,
Rhymix\Framework\Storage::red(파일명); // 파일 내용 읽기
Rhymix\Framework\Storage::write(파일명, 내용); // 파일에 내용 저장하기
이것도 상위 폴더 자동으로 생성해 줍니다.
감사합니다. 시도해 보겠습니다.
copy가 덮어쓰기 되는거죠??
Warning: Cannot copy because the source does not exist:
이렇게 뜨면 원본서버에서 다운로드를 못하게 해 놓아서 그런건가요?? 경로는 이미지 경로와 정확한데요....
php copy() 로는 되네요..
./xe/~~ 와 같은 경로 말고 상대적으로 첫경로까지 재대로 잡아주시면 더 좋을 것 같아요.
RX_BASEDIR 같은 상수쓰시면 자동으로 라이믹스가 설치된 최상위 폴더까지는 잡아주니 해당 경로 입력하고나서 경로에 대한 debugPrint를 찍어서 정상적으로 경로가 잡혀있는지 확인도 다시해보세요.
소스는 타사이트 https~ 이기 때문에 관련은 없는 것 같구요. php copy로는 잘 됩니다.
if (!self::exists($source))
이 부분이 뭐냐면, 해당 파일이 실제로 님 서버에 존재하는지를 검사하기 때문에 님 서버의 파일으로 copy를 진행하셔야 합니다.
외부의 파일을 그대로 가져오는 상황이라면 파일핸들러의 getRetmoteResponse와 같은 함수들을 사용하셔야 합니다.
Storage 라는 의미답게 내부에서 파일을 관리할때 사용하는 클래스입니다.
FileHandler::getRemoteFile(URL, 저장할 파일명); 을 사용하시면 좋습니다.
굳이 임시파일 만들어서 저장했다가 복사할 필요 없이, 그냥 한방에 저장됩니다.
파일 내용을 변수로 받아올 필요가 없기 때문에 메모리 사용량도 크게 절약되고요.