2016-05-27 116 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