cURL을 사용하여 Sharepoint에서 문서를 업로드하는 PHP 스크립트가 있습니다. 터미널에서 scipt를 실행하면 업로드 프로세스가 정상적으로 작동합니다.파일을 업로드하는 PHP 스크립트는 터미널에서 작동하지만, incron은 자동 호출이 아닙니다.
이 파일이 변경 될 때마다 자동으로 스크립트를 호출하고 싶습니다. incron을 사용하여 해당 폴더의 변경 사항을 감지하고 PHP 스크립트 호출을 트리거합니다.
내 incron 파일은 다음과 같습니다 : 나는 시스템 로그에서보고있을 때, 나는 스크립트 호출이 incron 제대로 트리거 된 것을 볼 수 있습니다
/var/www/[further path]/temp IN_MODIFY,IN_CREATE /usr/bin/php /var/www/[further path]/uploadToSharepoint.php
. 그러나 어떤 이유로 파일은 Sharepoint에 업로드되지 않습니다. 또한 전역 쓰기 권한이있는 파일을 만들려고했지만 내 문제가 해결되지 않았습니다. 여기
-rwxrwxrwx 1 www-data www-data 49058 Mär 3 10:28 [file].xlsx
나는 나의 스크립트 전화 했어된다
가 'database.php'를 포함;
$username="[username]";
$password="[password]";
$localFileURL="/var/www/[further path]/temp/";
$files = scandir($localFileURL, 1);
$newest_file = $files[0];
$pathToUpload=getTeamPath($newest_file);
uploadDocument($pathToUpload . '/' . $newest_file, $localFileURL . $newest_file,$username, $password);
function uploadDocument($dest, $localFile,$username, $password){
$fp = fopen($localFile, 'r');
// Connecting to website.
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
curl_setopt($ch, CURLOPT_URL, $dest);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 86400); // 1 Day Timeout
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_BUFFERSIZE, 128);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localFile));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_exec ($ch);
if (curl_errno($ch)) {
$msg = curl_error($ch);
}
else {
$msg = 'File uploaded successfully.';
}
curl_close ($ch);
}
정말 도움이됩니다.
편집 : 나는 지금도 정상적인 crontab을 사용하여 테스트를 진행했으며이 방법도 작동하지 않습니다. 오류를 인쇄하지 않고 스크립트를 실행하고 루프를 수행하지만 파일을 업로드하지는 않습니다. 인증과 관련이있을 수 있습니까?
실행중인 cron 스크립트에 문제가있는 경우 첫 번째 용의자는 항상 파일 사용 권한이지만이 문제를 완전히 알고있는 것으로 보입니다. 두 번째 용의자는 쉘 환경 변수가 될 수 있습니다. 나는 PHP의'$ _ENV' 변수를 읽을 수있는 곳으로 버리고 그 내용을 검사하려고합니다. –
아직 시도하지 않았다면 스크립트 STDOUT 및 STDERR을 cron 호출의 파일로 라우팅하여 그 내용을 확인하십시오! –
의견을 보내 주셔서 감사합니다. "> /var/www/[folder]/Log.log 2> & 1"을 내 명령에 추가하면 출력되지 않습니다. 아니면 잘못하고 있습니까? – user2550641