سلام
من یه دستور دارم که توی ترمینال بهم خروجی میده ولی توی php با دستورات exec و shell_exec اجرا نمیشه
shell_exec(mumudvb -l);
exec(mumudvb -l);
خروجی این دستورات نال هست
اول اینکه باید دستور رو توی کوتیشن بگذارین و دوم چک کنید توی تنظیمات PHP دستورات مذکور جزو disabled_functions نباشن.
در کلیت کار مشکلی نیست استاد ولی چون دستور مورد نظر من باید پورت های usb رو بخونه و این کار برای کاربر www-data غیرفعاله به همین منظور باید از طریق sudo اجرا بشه.برای همین visudo رو اینجوری تغییر دادم
www-data ALL=(ALL) NOPASSWD: ALL
و کد Php من شد این:
$out =shell_exec('sudo mumudvb -l')
استک اور فلو رو زیر رو کردم ولی بازم جواب نگرفتم.
پ.ن:من میخوام پورت های usb روی سرور رو بخونم و به کلاینت ها کاریی ندارم
دستور exec رو هم تست کردین؟ چند مورد برخورد کردم که یکی از این دو دستور جواب میداده و اون یکی جواب نمیده. ضمناً اگه میخواین خروجی رو بگیرین این کد رو هم تست کنین:
shell_exec('sudo mumudvb -l > ./usb.info &');
اینطوری خروجی دستور توی فایل usb.info قرار میگیره و میتونین محتوای اون فایل رو بخونین.
(09-09-1395، 12:33 ب.ظ)ADMIN نوشته: [ -> ]دستور exec رو هم تست کردین؟ چند مورد برخورد کردم که یکی از این دو دستور جواب میداده و اون یکی جواب نمیده. ضمناً اگه میخواین خروجی رو بگیرین این کد رو هم تست کنین:
shell_exec('sudo mumudvb -l > ./usb.info &');
اینطوری خروجی دستور توی فایل usb.info قرار میگیره و میتونین محتوای اون فایل رو بخونین.
راه حل مشکل رو پیدا کردم استاد
این
کتابخانه بهت اجازه میده که دستورات نیازمند sudo رو در Php اجرا کنی
انتهای دستور خط فرمان این رو هم اضافه کنید تا اگر خروجی ای به stderr میده بفهمید:
2>&1