اجرای دستورات شل از طریق اسکریپت php

سوال 

PHP

توسط masoud-fathi در 2 ماه پیش
2 575 1 2 ماه پیش
masoud-fathi reza-irdev
0

چطوری میشه یک دستور لینوکس رو در php اجرا کرد مثل دستور touchدر ابونتو برای ساخت فایل است چطوری میشه این دستور را در محیط php اجرا کرد اینم کدم

$ffmpeg="usr/bin/ffmpeg";
$cOM = "$ffmpeg -i /opt/lampp/htdocs/1.mp4 out.avi";
 shell_exec($cOM);
آخرین ویرایش: 27-12-2018 ساعت 21:26، توسط Reza

پاسخ ها

1

کدتون مشکلی نداره/

این کد الان تست شده مشکلی نداره

<?php
	echo "Starting ffmpeg...\n\n";
	echo shell_exec("ffmpeg -i input.mp4 output.avi &");
	echo shell_exec("mkdir script && cd script && touch testfile.php");
	echo "Done.\n";
?>

اگر تو هوست اشتراکی امتحان کنید احتمالا کار نمیکنه چون تابع shell_exec رو بدلایل امنیتی غیر فعال میکنن.

من در لوکال انجام میده کار نمیکنه و این ارور رو میده Permission denied کدم هم اینه $r= shell_exec("/usr/bin/ffmpeg -i 1.mp4 ali.avi 2>&1"); echo "<pre>".$r."</pre>"; – masoud-fathi 2 ماه پیش
تو لوکال علتش اینه که کاربر فعلی(شما) تو دایرکتوری که متعلق به root هست(/opt) نمیتونه فایل بسازه. تو لوکال یا فایلو انتقال بدید به اونجا دسترسی درست بهش بدید یا از طریق کامند لاین sudo کنید. sudo php run.phpReza 2 ماه پیش
متوجه نشدم میشه بیشتر توضیح بدید – masoud-fathi 2 ماه پیش
نمیدونم چطور واضح تر بگم. owner اسکریپتی که ران میکنید شما هستید وسعی دارید تو یه فولدر که واسه شما نیست کاری انجام بدید. به همین علت خطای دسترسی میده. راه حلشم بالا گفتم. میتونید در مورد دسترسی ها تو لینوکس تحقیق کنید. – Reza 2 ماه پیش
فایل رو چطوری انتقال بدم من که میتونم داخل opt هم فایل هم فولدر بسازم دسترسی دارم مشکل پس چیه توی کامند لاین هم یکبار اجرا میکنم و سیستم هنگ میکنه – masoud-fathi 2 ماه پیش

این سوال حل نشده است!

این سوال هنوز حل نشده یا به پاسخ بهتری نیاز دارد. برای پاسخ به این سوال کافیست وارد حساب کاربری خود شوید.

لطفا ابتدا لاگین کنید