رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اجرای دستورات bash در لینوکس
#1
سلام
من یه دستور دارم که توی ترمینال بهم خروجی میده ولی توی php با دستورات exec و shell_exec اجرا نمیشه

shell_exec(mumudvb -l);

exec(mumudvb -l);

خروجی این دستورات نال هست
پاسخ
تشکر شده توسط:
#2
اول اینکه باید دستور رو توی کوتیشن بگذارین و دوم چک کنید توی تنظیمات PHP دستورات مذکور جزو disabled_functions نباشن.
پاسخ
تشکر شده توسط:
#3
در کلیت کار مشکلی نیست استاد ولی چون دستور مورد نظر من باید پورت های usb رو بخونه و این کار برای کاربر www-data  غیرفعاله به همین منظور باید از طریق sudo اجرا بشه.برای همین visudo  رو اینجوری  تغییر دادم
www-data ALL=(ALL) NOPASSWD: ALL


و کد Php من شد این:
$out =shell_exec('sudo mumudvb -l')


استک اور فلو رو زیر رو کردم ولی بازم جواب نگرفتم.

پ.ن:من میخوام پورت های usb روی سرور رو بخونم و به کلاینت ها کاریی ندارم
پاسخ
تشکر شده توسط:
#4
دستور exec رو هم تست کردین؟ چند مورد برخورد کردم که یکی از این دو دستور جواب میداده و اون یکی جواب نمیده. ضمناً اگه میخواین خروجی رو بگیرین این کد رو هم تست کنین:
shell_exec('sudo mumudvb -l > ./usb.info &');
اینطوری خروجی دستور توی فایل usb.info قرار میگیره و میتونین محتوای اون فایل رو بخونین.
پاسخ
تشکر شده توسط: R.Rajai.Rad
#5
(09-09-1395، 12:33 ب.ظ)ADMIN نوشته: دستور exec رو هم تست کردین؟ چند مورد برخورد کردم که یکی از این دو دستور جواب میداده و اون یکی جواب نمیده. ضمناً اگه میخواین خروجی رو بگیرین این کد رو هم تست کنین:
shell_exec('sudo mumudvb -l > ./usb.info &');
اینطوری خروجی دستور توی فایل usb.info قرار میگیره و میتونین محتوای اون فایل رو بخونین.

راه حل مشکل رو پیدا کردم استاد
این کتابخانه بهت اجازه میده که دستورات نیازمند sudo رو در Php اجرا کنی
پاسخ
تشکر شده توسط:
#6
انتهای دستور خط فرمان این رو هم اضافه کنید تا اگر خروجی ای به stderr میده بفهمید:
2>&1
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 3 مهمان