2012-06-26 61 views
5

Làm cách nào để thực hiện đúng các lệnh trong dòng lệnh bằng cách sử dụng php? Ví dụ: tôi đang sử dụng lệnh bên dưới trong dòng lệnh để chuyển đổi tệp docx thành tệp pdf:Sử dụng PHP để thực thi lệnh cmd

pdfcreator.exe /PF"D:\Documents\sample.docx 

Bây giờ sử dụng mã PHP Tôi muốn có thể thực hiện cùng một lệnh nhưng dường như không có gì xảy ra :

<?php 
shell_exec('pdfcreator.exe /PF"D:\Documents\sample.docx"'); 
?> 

Điều này có thể thực hiện được trong PHP không? Nếu có, làm cách nào để thực hiện?

+0

### Cập nhật Bạn có gặp bất kỳ lỗi nào trong nhật ký không? Điều gì sẽ xảy ra nếu bạn bọc lệnh 'shell_exec' đó trong' var_export'? ### Original Bạn đã thử 'system()' thay thế chưa? Đây là tài liệu hướng dẫn: http://www.php.net/manual/en/function.system.php. –

+0

Tôi đã thử hệ thống và tất cả các chức năng khác để thực hiện các lệnh trên hệ thống (exec, shell_exec, system, pcntl_exec, passthru) –

+0

Tôi không phải là người downvoted, câu trả lời của bạn được đánh giá cao. –

Trả lời

8
system("c:\\path\\to\\pdfcreator.exe /PF\"D:\\Documents\\sample.docx""); 

dùng thử.

+0

Tôi vẫn cần phải bao gồm đường dẫn đến tập tin thực thi nếu tôi đã bao gồm nó trong các biến môi trường? –

+0

Tôi không chắc chắn, nhưng sự an toàn là vượt qua mọi con đường. –

+0

Tôi nhận được một lỗi cú pháp vì vậy tôi đã thay đổi nó thành một cái gì đó như thế này dựa trên mã mà bạn cung cấp: hệ thống ('C: \\ Program Files \\ PDFCreator \\ pdfcreator.exe/PF \ "D: \\ Documents \\ sample.docx "'); nhưng vẫn không có may mắn. –

4

Đừng quên thoát khỏi lệnh của bạn với escapeshellcmd(). Điều này sẽ ngăn cản bạn phải sử dụng các dấu gạch chéo ngược xấu xí và thoát khỏi các ký tự.

Ngoài ra còn có lựa chọn thay thế khác mà có thể làm việc:

`command` // back ticks drop you out of PHP mode into shell 
exec('command', $output); // exec will allow you to capture the return of a command as reference 
shell_exec('command'); // will return the output to a variable 
system(); //as seen above. 

Ngoài ra, hãy chắc chắn .exe của bạn được bao gồm trong biến $ PATH của bạn. Nếu không, hãy bao gồm đường dẫn đầy đủ cho lệnh.

+0

Đã thử mã bên dưới dựa trên câu trả lời của bạn nhưng vẫn không hoạt động. Tôi đã làm điều gì đó lộn xộn:

+0

Khi bạn chạy tập lệnh từ CLI, nó có xuất được gì không? Hãy thử một cái gì đó như: '$ command = escapeshellcmd ('pdfcreator.exe /PF"D:\Documents\sample.docx"> C: \ outfile'); '. bất cứ điều gì có được ghi vào C: \ outfile? –

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