2013-07-29 42 views
26

Tôi đã cố gắng sử dụng exec() với 'whoami' để kiểm tra xem nó hoạt động và tôi đã nhận kết quả củaphp exec() không thực hiện lệnh

nt authority\system 

Bây giờ tôi cần phải chạy một file .exe với các thông số từ php thông qua chức năng exec().

Tôi đã thử điều này trong dấu nhắc lệnh và nó thực sự chạy chương trình với các tham số đã cho. Đây là lệnh mẫu.


LƯU Ý file exe được 3 đầu vào (thư mục, file_name, report_file_nmae)

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

Nhưng khi tôi chạy lệnh này từ php file:

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

gì đang xảy ra. Đây là lần đầu tiên tôi sử dụng hàm exec(), vì vậy tôi không quen thuộc với các chi tiết của nó. Có gì sai?

tôi đã cố gắng sử dụng:

  • \\ thay vì \
  • escapeshellarg() trên thư mục
  • thêm "" xung quanh thư mục tên thư mục

Không may mắn

Phụ Lục:

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

hoặc

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

Tôi thậm chí đã thay đổi sự cho phép trên các tập tin để kiểm soát đầy đủ để tất cả người dùng. Nếu tôi gọi chương trình từ command prompt, tôi có thể thấy biểu tượng xuất hiện bên cạnh đồng hồ trong một giây.

Nhưng cùng một cuộc gọi từ php thậm chí sẽ không gọi chương trình.

Sửa

Thậm chí exec('notepad.exe'); không hoạt động. Một cái gì đó đã được thực hiện với cấu hình php có thể?

+1

Đảm bảo PHP có quyền để thực thi tệp đó. – Joren

+0

làm thế nào tôi có thể chắc chắn ..... – Brian

+0

Tôi thành thật không biết làm thế nào để làm điều đó trong Windows vì nó cho phép hệ thống là thực sự không phù hợp. – Joren

Trả lời

65

Tôi đã nói rằng tôi mới sử dụng chức năng exec(). Sau khi thực hiện thêm một số công việc đào bới, tôi đã đến số 2>&1 cần được thêm vào cuối lệnh trong exec().

Cảm ơn @mattosmat vì đã chỉ ra trong nhận xét. Tôi đã không thử điều này cùng một lúc bởi vì bạn nói nó là một lệnh Linux, tôi đang trên Windows.

Vì vậy, những gì tôi đã phát hiện ra, lệnh này thực sự đang thực hiện trong phần cuối. Đó là lý do tại sao tôi không thể nhìn thấy nó thực sự chạy, mà tôi đã mong đợi sẽ xảy ra.

Đối với tất cả các bạn, những người có vấn đề tương tự, lời khuyên của tôi là sử dụng lệnh đó. Nó sẽ chỉ ra tất cả các lỗi và cũng cho bạn biết thông tin/chi tiết về thực thi.

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

Cảm ơn tất cả những kẻ giúp đỡ, tôi đánh giá cao nó;)

+3

Biết điều này đã giúp ích rất nhiều. Không thể hiểu tại sao tôi không nhận được phản hồi của tôi. Cảm ơn. – earl3s

+1

Vâng, nó đã giúp rất nhiều. và tôi nhận được kết quả là "Truy cập bị từ chối" trên PHP trên IIS. Vì vậy, tôi đã thêm quyền cho NEWTWORK USER vào tệp tôi đang thực thi. –

+0

Nếu bạn đang chạy XAMPP thanh toán này: http://stackoverflow.com/questions/24941078/ffmpeg-and-php-on-mac-doest-work –

0

Bạn cũng có thể thử đưa ra đường dẫn đầy đủ đến nhị phân bạn đang cố gắng để chạy. Điều đó giải quyết được vấn đề của tôi khi cố gắng sử dụng ImageMagick.

Các vấn đề liên quan