Tôi đang cố gắng gọi một tập lệnh mất vài giây (dịch vụ web với bên thứ ba) bằng cách sử dụng lệnh gọi hàm exec PHP. Sau nhiều khó khăn, tôi đã giảm điều này thành ví dụ thế giới hello cổ điển. Các kịch bản gọi trông giống như:Không thể thực thi tập lệnh PHP bằng cách sử dụng PHP exec
exec('/usr/bin/php /home/quote2bi/tmp/helloworld.php > /tmp/execoutput.txt 2>&1 &');
Khi tôi chạy này, sản lượng execoutput.txt
chứa một bản sao của trang cách gọi kịch bản, không hello world
như tôi mong đợi.
Tại sao tôi không thể lấy tập lệnh PHP này để thực thi bằng lệnh exec? Lưu ý rằng khi tôi thay đổi lệnh thành một cái gì đó như ls -l
, đầu ra là một danh sách thư mục như mong đợi. btw, trong trường hợp nó quan trọng, tôi đã chmod kịch bản được gọi là 755 ...
Cập nhật - Tôi đã chuyển cuộc gọi exec đến cuối tập lệnh gọi và ít nhất giờ tôi không thấy tập lệnh gọi được thực hiện trong đầu ra. Thx để áp phích và tôi sẽ thử một số trong những ý tưởng này.
Trợ giúp!
Cảm ơn Steve
John - cảm ơn câu trả lời của bạn, nhưng thật không may, nó không hiệu quả với tôi. Khi tôi thử: exec ('/ home/quote2bi/tmp/helloworld.php> /tmp/execoutput.txt 2> & 1 &') ... Tôi nhận được kết quả tương tự (trang hiện tại trong tệp đầu ra). Các exec thứ hai bị chặn (thiếu &) - khi thêm tôi đã nhận được kết quả tương tự. –
Có tùy chọn nào nếu chức năng exec() bị vô hiệu hóa trên máy chủ của tôi –