2016-05-27 83 views
0

我想調用一個PHP從另一個PHP傳遞數據到它並獲得返回值。這兩個php在不同的領域。從另一個域調用另一個php,並得到結果

的第一個PHP:

$url = 'http://myweb.com/custom-php/createCat.php'; 
    $data = array('name' => $name); 

    $options = array(
     'http' => array(
      'header' => "Content-type: application/x-www-form-urlencoded\r\n", 
      'method' => 'POST', 
      'content' => http_build_query($data) 
     ) 
    ); 
    $context = stream_context_create($options); 
    $result = file_get_contents($url, false, $context); 

    echo $result; 

第二個PHP(這是對一個WordPress站點):

header("Access-Control-Allow-Origin: *"); 
    require('../wp-load.php'); 

    $name = $_REQUEST['name']; 
    echo $name; 
    if(isset($name)) 
    { 
     echo wp_create_category($name,0); 
    } 
    else 
    { 
     echo false; 
    } 

我收到以下錯誤:

的file_get_contents(http://myweb.com/custom-php/createCat.php):未能打開流:HTTP請求失敗! HTTP/1.1 500內部服務器錯誤

但是,如果我通過http://myweb.com/custom-php/createCat.php?name=test訪問它,它工作正常。

回答

1

請求錯誤可能是因爲了allow_url_fopen PHP.ini指令在遠程URL中設置爲off

因此,一個選擇可能是使用curl:

<?php 
$url = 'http://myweb.com/custom-php/createCat.php'; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HEADER, false); 
$result= curl_exec($curl); 
curl_close($curl); 
?> 

答到註釋「我怎麼能送我需要(與一些文本的變量)的數據」:

使用CURLOPT_POSTFIELDS:

curl_setopt($curl, CURLOPT_POSTFIELDS, "name=test&var=" . urlencode($someText)); 
+0

嗨,allow_url_fopen指令設置爲On。 使用CURL,我怎樣才能發送我需要的數據(帶有一些文本的變量)? 謝謝。 – troyz

+0

完美的工作,非常感謝! – troyz

+0

我很高興知道它;) –

0

當您訪問網址時,您提出獲取請求。 你也應該這樣做在你的PHP:

$url = 'http://myweb.com/custom-php/createCat.php'; 
$data = array('name' => $name); 

$result = file_get_contents($url . '?' . http_build_query($data)); 

echo $result; 

此外,您還需要檢查$_REQUEST鍵設置使用前:

//this header is only required for ajax.. 
header("Access-Control-Allow-Origin: *"); 
require('../wp-load.php'); 

if(isset($_REQUEST['name'];)) 
{ 
    echo wp_create_category($_REQUEST['name'],0); 
} 
else 
{ 
    echo false; 
} 
+0

嗨,這樣做會得到以下錯誤: 警告:file_get_contents(http://myweb.com/custom-php/createCat.php?name=catTest):無法打開流:HTTP請求失敗! HTTP/1.1 500內部服務器錯誤 在C:\ XAMPP \ htdocs中\一般\ PHP \ insertCategory.php
其中線29是的file_get_contents線,但點擊該錯誤提供的鏈路上作品。 – troyz