2010-06-11 51 views
19

Tôi đã tìm kiếm một cách dễ dàng để lấy ServerName của máy nơi Symfony chạy trong Symfony (để ứng dụng của tôi thích nghi khi nó được sử dụng trên một máy chủ với một ServerName khác), nhưng tôi không thể tìm thấy nó. Tôi tạo ra một biến trong app.yml và tôi lấy nó, nhưng tôi vẫn tự hỏi nếu không có cách nào dễ dàng hơn để làm điều này. Bạn làm như thế nào? Tôi đang sử dụng Symfony 1.2 và 1.4 trên các dự án khác nhau.Có cách nào dễ dàng để lấy ServerName trong Symfony không?

+2

Bạn không thể sử dụng gethostname()? http://php.net/manual/en/function.gethostname.php – mamoo

+0

Xin lỗi, tôi không muốn tên máy chủ trên thực tế, nhưng Tên máy chủ (Tôi đã chỉnh sửa bài đăng của mình) – greg0ire

Trả lời

39

tôi nghĩ rằng tôi tìm thấy một cái gì đó:

$this->getRequest()->getHost() 

điều này dường như làm việc ... nó sẽ chỉ làm việc nó ở đó là một yêu cầu tất nhiên, vì vậy nó không phải là phổ quát.

+1

Một đồng nghiệp chỉ nói với tôi rằng chúng tôi không nên dựa vào điều này, bởi vì có rất nhiều rủi ro. Ông cho rằng thiết lập trong tập tin YML là giải pháp tốt nhất ... – greg0ire

+1

bạn có thể giải thích về rủi ro không? :-) – Flukey

+2

Có hai trường hợp mà bạn không muốn dựa vào hệ thống như vậy: - khi bạn không sử dụng apache (khi gửi thư qua cronjob chẳng hạn) - khi bạn có nhiều máy chủ nhưng bạn muốn để quảng bá mua trang web của bạn chỉ bằng một trong số họ. – greg0ire

2

Không phải rất tốt đẹp, nhưng tôi sử dụng $_SERVER["SERVER_NAME"] trong tập tin điều khiển phía trước của tôi, và sử dụng để xác định môi trường Tôi đang kích hoạt:

$env = "prod"; 
if (preg_match("/qahost\.tld$/", $_SERVER["SERVER_NAME"])) 
{ 
    $env = "qa"; 
} 
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', $env, false); 
sfContext::createInstance($configuration)->dispatch(); 

Tôi muốn được quan tâm để xem cách tiếp cận đúng đắn : -)

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