문제

작업중인 시스템에 대한 설치 스크립트를 작성하려고합니다. 스크립트는 한 위치에서 다른 위치로 일부 기본 파일을 복사하고 다양한 폴더를 만듭니다. 이 비트가 치료를 받고 있지만 유일한 문제는 FTP를 통해 로그인 할 때 편집 할 수 없거나 PHP가 이동 한 파일을 삭제할 수 없다는 것입니다.

터미널을 통해 로그인하면 행복하게 "sudo chmod -r 777 [dir]가 사라질 수 있습니다. 문제는 다음과 같습니다.

PHP 끝에서 무엇이 빠졌습니까?

내 권한 기능은 다음과 같습니다.

function set_permissions($file) 
{
  if (file_exists($file)):
    chmod($file,0777);  
  endif;                
}

권한을 777로 설정하는 것이 100% 이상적이지 않다는 것을 이해하지만 PHP가 나를 위해 이동 한 후 FTP를 통해 파일을 편집 할 수있는 결과를 얻으려고 노력하고 있습니다.

내가 충분히 분명해지기를 바랍니다. 이것은 지금 나를 당황하게하고 있으므로 어떤 도움을 주셔서 감사합니다 :)

편집하다: 전체 프로세스는 다음과 같습니다.

mkdir($root_dir, 0777);
mkdir($images_dir, 0777);
if (!copy($orig_logo, $new_logo)) 
{
  echo "failed to copy $orig_logo...";
} 
  // see function above for details on set_permissions...       
  $this->set_permissions($new_logo);
}

(모든 경로도 정확합니다)

편집하다: 터미널을 통해 로그인하기 전에 파일에는 다음과 같은 권한이 있습니다.

-rwxrwxrwx 1 www-data www-data 2739 2009-08-26 01:45 base.css

로그인하고 변경 한 후 파일이 있습니다.

-rwxrwxrwx 1 www-data www-data 2739 2009-08-26 01:45 base.css

이 시스템은 관리 영역을 통해 파일을 편집하고 삭제할 수있는 컨텐츠 관리 시스템이며 이상하게도 충분히 작동합니다. 파일이 어떻게 든 다른 사람에게서 잠겨있는 것 같습니다. 아파치...하지만 파일 정보는 그렇지 않다고 제안합니다. 이상해 ...

도움이 되었습니까?

해결책

디렉토리에도 쓰기 권한이 필요한 것 같습니다.

다른 팁

파일이 존재합니까 아니면 경로가 정확합니까?

가능하다면 chmod -R 777 그러면 터미널을 통해 문제를 해결합니다 실행하기 전에 PHP가 설정 한 권한은 무엇입니까? chmod??? 분명히 777이 아닙니다. 내 추측은 PHP 코드가 실제로 권한을 변경하지 않는다는 것입니다.

코드를보고 파일이 존재하지 않으면 허가 변경 기능이 조용히 실패 할 수 있습니다. 예 : 유효하지 않은 파일 이름 (잘못된 폴더? 잘못된 상대 경로?)을 제공하지만 말할 수 없기 때문에 알 수 없습니다. set_permissions() 기능이 너무 무서워서 경고합니다. 다음과 같이 다시 작성해야합니다.

function set_permissions($file) 
{
  if (!file_exists($file))
    throw new Exception(__FUNCTION__ . "() file doesn't exist! '$file'");
  chmod($file,0777);
  error_log("chmod 777 $file"); // debug
}

이를 통해 무슨 일이 일어나고 있는지 확인할 수 있으며 파일 이름이 올바른 경우 확실히 알 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top