Thứ Tư, 13 tháng 3, 2019

Khắc phục lỗi không chạy hàm exec của PHP trong Apache2 Service

Một ngày đẹp trời, khi có nhu cầu viết một controller thực thi lệnh pull và push git :D :D nhằm mục đích release new version cho server =)). Vấn đề nan giải bắt đầu nảy sinh. Cụ thể tôi làm như sau:

exec("cd /d $projectdir && git pull");
// /d trong windows có nghĩa là di chuyển lệnh cd sang ổ đĩa khác :D.

Câu lệnh hoàn toàn chạy tốt trong môi trường dev: php -S localhost:6996, tuy nhiên khi release lên server apache thì hoàn toàn ngậm hành, im phăng phắc không báo bất kỳ lỗi gì khác, chỉ biết return 1 :(.

Sau quá trình tìm kiếm thì giải pháp là: 
**Root: https://stackoverflow.com/questions/28424664/apache-settings-block-php-exec-from-executing

1. Trong file httpd.conf thêm dòng cấu hình sau:
php_admin_flag safe_mode Off
safe_mode Off #neu dang On thi Off
2. Trong file php.ini kiểm tra cấu hình disabled_functions có liệt kê hàm exec hay không, nếu có thì bỏ đi.

*****Note ngoài lề:
Trong windows, mặc định khi mở cmd sẽ là thư mục user tại ổ C, nếu muốn cd sang ổ D, cần phải gõ lệnh D: sau khi gõ lệnh cd path. Để khắc phục tình trạng này, cần gõ lệnh: cd /d path ----- ez game


:D :D :D

1 nhận xét: