एन उपर्युक्त तरीकों में से कोई भी मेरे लिए काम करता है। मैं अपने होस्टर के साझा सर्वर पर क्रॉन चलाता हूं। क्रॉन कार्य सीपीनल जैसे इंटरफ़ेस के साथ बनाया गया है। कमांड लाइन PHP को स्क्रिप्ट नाम और कुछ तर्कों को पास करती है।
यही कारण है कि कैसे क्रॉन के लिए कमांड लाइन लग रहा है:
php7.2 /server/path/to/my/script/my-script.php "test.tst" "folder=0"
न तो की साथ ऊपर जवाब मेरे मामले के लिए काम किया।
समस्या यह नहीं बताई गई थी कि आपको सीएलआई तर्कों तक पहुंच प्राप्त करने से पहले वैश्विक रूप से घोषित करना होगा। यह आधिकारिक PHP मैनुअल में न तो उल्लेख किया गया है।
ठीक है, शायद किसी को सर्वर के साथ चलने वाली स्क्रिप्ट के लिए वैश्विक ऑनी घोषित करना होगा। शायद सीएलआई में एक स्थानीय पर्यावरण चल रही स्क्रिप्ट में वैश्विक घोषित होने की आवश्यकता नहीं है। जब मैं इसका परीक्षण करता हूं तो मैं यहां पोस्ट करता हूं।
लेकिन मेरे मामले के लिए nevertherless काम कर विन्यास है:
global $argv;
echo "argv0: $argv[0]\n\r"; // echoes: argv0: /server/path/to/my/script/my-script.php
echo "argv1: $argv[1]\n\r"; // echoes: argv1: test.tst
echo "argv2: $argv[2]\n\r"; // echoes: argv2: folder=0
मैं $_SERVER['argv']
superglobal सरणी के साथ एक ही परिणाम मिला है। एक इस तरह इसका इस्तेमाल कर सकते हैं:
$myargv = $_SERVER['argv'];
echo $myargv[1]; // echoes: test.tst
आशा है कि किसी को मदद मिलती है।
स्रोत
2018-02-19 10:20:12
मैंने कोशिश की, यह काम नहीं किया। क्या मुझे कोटेशन के बीच दूसरा तर्क देना है ताकि मैं इसे वहां पढ़ सकूं? क्योंकि मैंने कमांड में कोटेशन का उपयोग नहीं किया था। –
क्या आपका PHP कमांड लाइन के लिए बनाया गया है? यह एक अलग एसएपीआई है, और सीजीआई के लिए उपयोग किए जाने वाले एक से अलग PHP बाइनरी की आवश्यकता होती है। –
मैं shell_exec ("कमांड") कमांड का उपयोग करता हूं; crontabs बनाने के लिए –