01/10/2018, 17:22

Cách debug lỗi hàm exec trong PHP

Nếu bạn thường xuyên sử dụng hàm exec của PHP để thực thi các chương trình ngoài như FFMPEG, SWFTools, JODConverter hay là PDFTK để thực hiện một số tác vụ đặc biệt như chuyển đổi các định dạnh media, thao tác file PDF vv…. Ví dụ bạn thực thi việc ghép các PDF file bằng cách dùng PDFTK ...

Nếu bạn thường xuyên sử dụng hàm exec của PHP để thực thi các chương trình ngoài như FFMPEG, SWFTools, JODConverter hay là PDFTK để thực hiện một số tác vụ đặc biệt như chuyển đổi các định dạnh media, thao tác file PDF vv….

Ví dụ bạn thực thi việc ghép các PDF file bằng cách dùng PDFTK như sau:

$output = array();
$return_var = 0;
exec("C:MyWebsitespdftk" "C:MyWebsitesfiel1.pdf" "C:MyWebsitesfile2.pdf" "C:MyWebsitesfile3.pdf" output "C:MyWebsitesfinal.pdf", $output, $return_var);
print_r($output);

Tuy nhiên, bạn có thể không thực thi được chương PDFTK ở trên vì trục trặc kỹ thuật ở đâu đó trong câu lệnh. Và lỗi sẽ được đưa vào mảng $output cho bạn xem, giúp bạn có thể debug được.

Tuy vậy, với cách viết như trên thì lỗi sẽ không được đưa vào mảng mặc dù $return_var lớn hơn 0. Để lỗi được đưa vào mảng bạn phải sửa lại lệnh như sau:

$output = array();
$return_var = 0;
exec("C:MyWebsitespdftk" "C:MyWebsitesfiel1.pdf" "C:MyWebsitesfile2.pdf" "C:MyWebsitesfile3.pdf" output "C:MyWebsitesfinal.pdf 2>&1", $output, $return_var);
print_r($output);

Chúng ta phải thêm vào 2>&1 để cho lỗi được đưa vào mảng $output giúp chúng ta debug
Happy coding :D


0