के साथ स्वचालित कॉल के रूप में नहीं, मेरे पास एक PHP स्क्रिप्ट है जो curl का उपयोग करके शेयरपॉइंट पर एक दस्तावेज़ अपलोड करती है। यदि मैं टर्मिनल में विज्ञान चलाता हूं, तो अपलोड प्रक्रिया ठीक काम करती है।फ़ाइल अपलोड करने के लिए PHP स्क्रिप्ट टर्मिनल में काम करता है, लेकिन इन्क्रोन
जब भी यह फ़ाइल बदल जाती है, तो मैं स्वचालित रूप से स्क्रिप्ट को कॉल करना चाहता हूं, मैं संबंधित फ़ोल्डर में परिवर्तन का पता लगाने और PHP स्क्रिप्ट के कॉल को ट्रिगर करने के लिए incron का उपयोग करता हूं।
मेरे incron फ़ाइल ऐसा दिखाई देता है:
/var/www/[further path]/temp IN_MODIFY,IN_CREATE /usr/bin/php /var/www/[further path]/uploadToSharepoint.php
जब मैं syslog पर एक नजर है, मैं देख सकता है कि स्क्रिप्ट कॉल incron द्वारा सही ढंग से शुरू हो रहा किया गया है। लेकिन कुछ कारणों से, फ़ाइल शेयरपॉइंट पर अपलोड नहीं की गई है। मैंने वैश्विक लेखन अनुमतियों के साथ फ़ाइल बनाने का भी प्रयास किया, लेकिन इससे मेरी समस्या हल नहीं हुई।
-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);
}
मैं वास्तव में किसी भी मदद की सराहना करता हूं !!!
संपादित करें: मैंने इसे सामान्य क्रोंटैब के साथ भी परीक्षण किया है और यह या तो काम नहीं करता है। यह त्रुटि को प्रिंट किए बिना स्क्रिप्ट और लूप निष्पादित करता है, लेकिन फ़ाइल अपलोड नहीं करता है। क्या यह संभव है कि प्रमाणीकरण के साथ कुछ करना है?
जब मुझे क्रॉन स्क्रिप्ट नहीं चल रहा है, तो पहला संदिग्ध हमेशा फ़ाइल अनुमतियां होती है, लेकिन आप इस मुद्दे के बारे में पूरी तरह से अवगत हैं। दूसरा संदिग्ध खोल पर्यावरण चर हो सकता है। मैं कहीं भी पढ़ने योग्य और इसकी सामग्री की जांच करने के लिए PHP के '$ _ENV' चर को डंप करने का प्रयास करूंगा। –
यदि आपने पहले से यह कोशिश नहीं की है, तो क्रॉन कॉल में एक फ़ाइल में अपनी स्क्रिप्ट्स STDOUT और STDERR को रूट करने का प्रयास करें, और देखें कि यह आपको क्या बताता है! –
आपकी टिप्पणियों के लिए धन्यवाद। "> /var/www/[folder]/Log.log 2> & 1" को जोड़ने में मेरे आदेश में कोई आउटपुट नहीं है या क्या मैं इसे गलत कर रहा हूं? – user2550641