PHP file_get_contents适用于本地但不适用于服务器

时间:2016-08-01 06:30:27

标签: php

我使用file_get_contents上传图片,我使用webcam.js来捕获图片。它正在我的本地工作但是当我将它移动到我的在线服务器时它无法工作,所以我尝试搜索最新情况并引导我allow_url_fopen所以我检查了我的cpanel如果allow_url_fopen已开启且我导航PHP Selector | options并证明它是on,那么我希望有人知道我需要做的下一步行动是什么。使它工作。

PHP:

<?php

//set random name for the image, used time() for uniqueness

$filename =  time() . '.jpg';
$filepath = '../images/profile/';

      $patient_id = $_SESSION['patient_current_id'];

      $sql  = "UPDATE patients SET ";
      $sql .= "image_path = '{$filename}' ";
      $sql .= "WHERE id = {$patient_id} ";
      $sql .= "LIMIT 1";
      $image = mysqli_query($con, $sql);

//read the raw POST data and save the file with file_put_contents()
$result = file_put_contents( $filepath.$filename, file_get_contents('php://input') );
if (!$result) {
    print "ERROR: Failed to write data to $filename, check permissions\n";
    exit();
}

echo $filepath.$filename;
?>

2 个答案:

答案 0 :(得分:0)

  • 虽然最有希望的原因可能是验证php.ini中allow_url_fopen是否设置为true。
  • 它设置为TRUE,检查您的服务器管理员是否已禁用任何此类功能?

或者,您也可以尝试使用CURL获取文件的内容。

答案 1 :(得分:0)

尝试使用cUrl而不是file_get_contents。

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $data = curl_exec("http://www.example.com");
 curl_close($ch);
 $result = file_put_contents( $filepath.$filename, $data );