it-swarm.dev

php exec () لا ينفذ الأمر

لقد حاولت استخدام exec() مع 'whoami' للتحقق من نجاحه وحصلت على نتيجة

nt authority\system

أحتاج الآن إلى تشغيل ملف .exe مع معلمات من php عبر exec() function.

جربت هذا في موجه الأوامر وفي الواقع يتم تشغيل البرنامج مع معلمات معينة. هذا هو المثال المثال.


ملاحظة يحصل ملف exe على 3 مدخلات (مجلد ، اسم ملف ، report_file_nmae)

> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml

ولكن عندما أقوم بتشغيل هذا الأمر من php file:

exec('..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml');

لا شيء يحدث. هذه هي المرة الأولى التي أستخدم فيها وظيفة exec () ، لذلك لست على دراية بتفاصيلها. ما هو الخطأ؟

حاولت استخدام:

  • \\ بدلاً من \
  • escapeshellarg() في الدليل
  • تمت إضافة "" حول أسماء مجلدات الدليل

لا حظ

إضافة:

echo exec($command)  // echos < .... why?

أو

exec($command, $output);
print_r($output);        // Array()

لقد غيرت إذن الإذن في الملف للتحكم الكامل لجميع المستخدمين. إذا اتصلت بالبرنامج من command Prompt ، أستطيع أن أرى الرمز يظهر بجانب الساعة لمدة ثانية.

لكن نفس الدعوة من php لن تتصل بالبرنامج.

تحرير

حتى exec('notepad.exe'); لا يعمل. يجب القيام بشيء ما باستخدام php التكوينات ربما؟

33
Brian

لقد قلت بالفعل إنني جديد على exec() وظيفة. بعد القيام ببعض عمليات الحفر ، أتيت 2>&1 والتي يجب إضافتها في نهاية الأمر في exec().

شكرًا @mattosmat لتوضيحها في التعليقات أيضًا. لم أجرب هذا مرة واحدة لأنك قلت إنه أمر Linux ، فأنا على نظام Windows.

لذلك ، ما اكتشفته ، الأمر ينفذ فعليًا في النهاية الخلفية. هذا هو السبب في أنني لم أستطع أن أرى أنه يعمل بالفعل ، وهو ما كنت أتوقع حدوثه.

بالنسبة لكم جميعا ، الذين واجهوا مشكلة مماثلة ، فإن نصيحتي هي استخدام هذا الأمر. سوف يشير إلى جميع الأخطاء ويخبرك أيضًا بمعلومات/تفاصيل حول التنفيذ.

exec('some_command 2>&1', $output);
print_r($output);  // to see the response to your command

شكرا لجميع مساعدة الرجال ، وأنا أقدر ذلك ؛)

79
Brian

قد تحاول أيضًا إعطاء المسار الكامل للثنائي الذي تحاول تشغيله. أدى ذلك إلى حل مشكلتي عند محاولة استخدام ImageMagick.

0
craned