2012-01-27 33 views
6

Nó hoạt động hoàn hảo trên máy chủ cục bộ với Xampp, nhưng khi tôi thử trên máy chủ (host-ed.net), fopen không thể mở bất kỳ url nào, nó chỉ hoạt động đối với các tệp không có http.fopen không hoạt động trên máy chủ của tôi

<?php 
$file="http://www.google.es"; 
$gestor = fopen($file, "r") or die ("Nothing"); 
?> 

Trong máy chủ của tôi với mã này cho thấy Không có gì. Có thể là bất cứ điều gì trên php.ini?

EDIT: Trong php.ini: allow_url_fopen = On

EDIT: Đã giải quyết xong. Máy chủ của tôi đã tắt nó, nhưng bây giờ nó đã được kích hoạt. Cảm ơn câu trả lời.

Trả lời

8

fopen không thể mở bất kỳ url

Kiểm tra giá trị của allow_url_fopen php.ini setting:

var_dump(ini_get('allow_url_fopen')); 

Đây có thể là sai. Bạn sẽ cần nói chuyện với máy chủ lưu trữ web của mình hoặc thử một phương pháp khác. Mabye CURL được bật?

Bạn cũng nên kiểm tra các giá trị error_reportingdisplay_errors của mình. PHP nên đã phàn nàn lớn về việc không thể mở URL. Bạn sẽ muốn biến cả hai trong số họ tất cả các con đường lên trong khi phát triển mã, vì vậy bạn có thể hiểu những gì đi sai dễ dàng hơn.

+0

Xin lỗi, tôi quên viết nó ... không sao. allow_url_fopen = Trên – Fischer

+0

Trong trường hợp đó, bạn sẽ muốn kiểm tra mức báo cáo lỗi của mình và đảm bảo rằng các lỗi có thể được hiển thị. PHP sau đó có thể cho bạn biết những gì thực sự xảy ra. – Charles

2

Việc cho phép mở các url với fopen được điều khiển bởi php.ini thiết allow_url_fopen. Bạn có thể thấy cài đặt hiện tại của mình bằng cách sử dụng phpinfo() sẽ đặt một tài liệu html chứa tất cả cài đặt máy chủ của bạn.

0

Như http://php.net/manual/en/function.fopen.php tiểu bang,

Nếu tên tập tin có dạng "Đề án: // ...", nó được giả định là một địa chỉ URL và PHP sẽ tìm kiếm một xử lý giao thức (còn được gọi là một wrapper) cho chương trình đó. Nếu không có trình bao bọc cho giao thức đó được đăng ký, PHP sẽ phát ra một thông báo để giúp bạn theo dõi các vấn đề tiềm ẩn trong tập lệnh của bạn và sau đó tiếp tục như thể tên tệp chỉ định một tệp thông thường.

Do đó, tôi giả định rằng không có gói được đăng ký cho url và php coi đó là tên tệp thông thường, không tồn tại.

0

Thử Curl, nó sẽ hoạt động nếu được cài đặt trên máy chủ web đó.

0

Bạn có tài khoản lưu trữ miễn phí không? Hầu hết các dịch vụ lưu trữ giới hạn kết nối gửi đi cho các tài khoản miễn phí để ngăn chặn lạm dụng. Hãy thử điều này:

$fp = fsockopen("some.alive.site", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    echo "Everything is OK"; 
    fclose($fp); 
} 

Nếu bạn thấy thông báo lỗi - bạn không được phép thực hiện kết nối gửi đi.

0

Nếu bạn đang sử dụng PHP-FPM, hãy kiểm tra các tệp cấu hình trong pool.d/.Các hồ bơi PHP-FPM có thể ghi đè cài đặt php bằng cách sử dụng php_admin_flag, php_admin_value, php_flag hoặc php_value. (Chúng tôi đã gặp phải điều này trên Ubuntu 16 vps)

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