2013-02-05 3 views
0

나는 종종 너무 자주 실행되고 사진을 처리하는 백엔드 일괄 처리/CRON 작업이 포함 된 PHP 웹 사이트를 운영합니다. 웹 및 데이터베이스 서버와 RAID 스토리지는 Fedora 14 박스이며 사진 소프트웨어는 스토리지 서버의 Windows 7 VirtualBox에서 실행됩니다.VirtualBox의 PHP 사용 권한 Windows 게스트 공유 폴더

스토리지 배열이 공유 폴더로로드되고 네트워크 위치 아래에 E : \로 표시됩니다. PHP-CLI를 통해 모든 분은 다음과 같습니다

PHP의 exec 명령 실행 :

exec("C:\\service\\photo_edit.exe --input-file E:\\photos\\photo_example.jpg --effect crossprocess --output-file E:\\photos\\user\\finished_example.jpg") 

라인이 작동 명령에 직접 명령을 실행합니다. 문제는, PHP는 E : \를 전혀 사용하지 않는 것처럼 보입니다. 명령 프롬프트를 통해 액세스 할 수 있지만 말입니다. 또한 파일을 편집하고 Linux에서 실행할 수있는 서비스가 더 많기 때문에 Windows를 VirtualBox에 유지해야합니다.

Windows의 웹 저장소에서 이러한 파일을 처리하려면 PHP가 필요합니다.

+0

"PHP는 E : \를 전혀 사용하지 않는 것 같습니다"- 어떤 오류가 있습니까? 찾을 수 없거나 사용 권한/다른 것을 찾을 수 없습니까? – Gray

+0

권한 ... 웹 서버의 계정이 공유 자체와 공유가 발생하는 기본 파일 시스템에 모두 액세스 할 수 있는지 확인하십시오. –

답변

1

사용 권한 문제는 아닙니다. 드라이브 문자에 매핑 된 네트워크 공유는 사용자 별 설정입니다. Apache가 실행되는 사용자는 E:으로 매핑 된 해당 공유가 없습니다.

대안은 다음과 같습니다

  1. 가 UNC 구문 사용 \\vboxsvr\whatever
  2. 현재 아파치 사용자의 드라이브지도 - Does not seem possible
  3. 변경 아파치 서비스가
으로 실행하는 사용자 (LOCAL_SYSTEM을?)
+0

와우, 나는 단순히 UNC 구문으로 바꿀 수 있다는 것을 몰랐다. 지금 일하고있는 것 같습니다! – user1721724

0

PHP에 E:\에 대한 액세스 권한이 있습니까? 명령을 실행할 때 관리자 일 가능성이 높습니다. 반대로 PHP는 낮은 권한으로 실행될 가능성이 큽니다.