我有一个php脚本,可以使用curl在sharepoint上上传文档。
如果我在终端中运行scipt,上传过程就可以正常工作。
由于我想在文件更改时自动调用脚本,所以我使用incron来检测相应文件夹中的更改并触发对php脚本的调用。
我的incron文件如下所示:

/var/www/[further path]/temp IN_MODIFY,IN_CREATE /usr/bin/php /var/www/[further path]/uploadToSharepoint.php

当我查看syslog时,可以看到incron已经正确地触发了脚本调用。但由于某些原因,文件未上载到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测试了它,但这也不起作用。它确实执行脚本并在不打印错误的情况下循环执行,但不上载文件。这可能与身份验证有关吗?

最佳答案

如果你说当你跑的时候一切正常

> php /var/www/[further path]/uploadToSharepoint.php

从命令行手动而不是通过incron,那么最有可能的问题是运行incrone命令的user
选项1)尝试识别运行incrone命令的用户,然后切换到该用户并再次运行php /var/www/[further path]/uploadToSharepoint.php
选项2)尝试chmod到0777您的扫描目录,然后使用incron再次测试

08-26 15:43