سؤال
أحاول تشغيل برنامج نصي اختبار باستخدام Crontab داخل Plesk. ملف PHP ببساطة أرسل لي رسالة عبر البريد الإلكتروني
mail('me@somewhere.com','Cron Test','Test');
طريقي إلى PHP IS/user/bin/php
لقد دخلت * في كل حقل ، لتشغيل البرنامج النصي كل دقيقة مع الأمر التالي:
/usr/bin/php -q /usr/httpdocs/crontest.php
ومع ذلك ، لا يتم تشغيل البرنامج النصي.
هل أستطيع مساعدتك؟
ربما أفتقد شيئًا بسيطًا ، لم أستخدم كرون من قبل.
أي نصيحة موضع تقدير.
شكرًا.
المحلول
أود أن أبدأ بالحصول عليه على الكتابة إلى ملف السجل. على سبيل المثال:
* * * * * /usr/bin/php -q /usr/httpdocs/crontest.php >> /a-location/crontest.log 2>&1
سيعطيك هذا على الأقل أي أخطاء واضحة مثل عدم القدرة على العثور على PHP وما إلى ذلك.
نصائح أخرى
لقد وجدت أنه عند استخدام CRON المستند إلى المستخدم في PLESK ، هناك عدد من المشكلات:
أولاً ، وجدت أنه يجب عليك الرجوع إلى البرنامج النصي من المجال الظاهري. إذا كان البرنامج النصي الخاص بك يحتوي على عنوان مطلق من /var/www/vhosts/domain.com/httpdocs/email-this.php ، فيجب عليك الإشارة إليه باسم httpdocs/email-this.php في crontab.
ثانياً ، يجب أن يكون للنص أذونات معينة للغاية ، ولكن ليس متأكدًا مما يجب أن يكون عليه ". Apache: Apache هو كل ما نجح بالنسبة لي. حتى مع مجموعة إذن كتابة المجموعة ، لا يزال يتعين على المستخدم أن يكون Apache ... غريب.
ثالثًا ، كانت أسهل طريقة لإجراء الاختبار هي تحرير crontab مباشرة بدلاً من العودة إلى Plesk في كل مرة كنت بحاجة لإجراء تغيير ... قم بتحرير crontab مثل هذا:
crontab -u [fileystem -username] -e
رابعًا ، لم أتمكن أبدًا من الحصول على crontab للكتابة إلى ملف سجل خارج httpdocs (جربت الإحصائيات/السجلات/cron_log بكل طريقة يمكن أن أفكر فيها ... لول ... لا نرد). انتهى بي الأمر فقط إضافة توجيه Mailto في الجزء العلوي من ملف Crontab أثناء الاختبار:
على سبيل المثال:
MAILTO=you@domain.com
## * * * * * php -q httpdocs/cron.php
انظر أيضًا هذا إذا كان لديك Plesk 10 أو أعلى: http://shaun.net/2011/09/solving-plesk-10-3-1-cron-issues/
توجب علي فعل هذا
/usr/local/psa/bin/server_pref -u -crontab -secure -shell "/bin/sh"
للحصول على هذا (مثال) العمل: wget -o - http://www.yourdomain.com/cron.php