Như đã trình bày ở trên, $ _SERVER là không có mặt khi bạn chạy php qua php-cli.
Mặc dù, có một tùy chọn để chạy tập lệnh cron'd của bạn trong php-cgi, nơi bạn sẽ có $ _SERVER. Nếu bạn cuộn tròn đến máy chủ web cục bộ thì $ _SERVER sẽ được điền.
$ cat /etc/cron.daily/mydailyphpwork
/usr/bin/curl http://domain.tld/path/to/cron-script.php &> /dev/null
Tuy nhiên, tôi nghĩ rằng bạn thực sự nên gắn bó với các giải pháp được đề xuất bởi TimWolla hoặc DerVO, trừ khi bạn thực sự cần phải hành vi này.
Ưu điểm:
- Bạn sẽ nhận được tất cả các biến $ _SERVER thiết lập như mong đợi.
- Nếu bạn cần phải viết lại rất nhiều mã với if-else của điều này có thể được ưa thích vì bạn không cần phải thay đổi bất kỳ mã nào.
Nhược điểm:
- Nó là loại một cách giải quyết và có lẽ có nghĩa là tăng nhẹ tải CPU.
Nguồn
2012-02-03 12:49:14
vui lòng cung cấp một số lỗi thông điệp của một số loại. Có thể $ _SERVER ['HTTP_HOST'] không xác định do tập lệnh cron không định nghĩa bất kỳ HTTP_HOST nào, giống như trình duyệt? Bạn có thể kiểm tra nó với isset ($ _ SERVER ['HTTP_HOST']) –
php> = 5.3.0 sử dụng gethostname() – nick