【问题标题】:PHP script works only in local host,not in Amazon? [duplicate]PHP 脚本仅在本地主机中有效,在 Amazon 中无效? [复制]
【发布时间】:2016-01-03 12:58:42
【问题描述】:

我是一个非常初学者,如果它太基础,请原谅我。

我已经使用MAMP 设置了一个本地主机,并且我有一个通过Twilio 呼叫我的index.php 文件,并且它工作得很好,我总是接到电话:

<?php

$id = "ACxx15d26xxxxxxxxx454424bxxexx3f";
$token = "79fb4xxxf93c8exxxxxxxda6bxxxxe9 ";  
$url = "https://api.twilio.com/2010-04-01/Accounts/$id/Calls.json";
$CallURL = "http://www.someweb.com";
$from = "+97223721333";
$to = "+971111111111"; // twilio trial verified number
$body = "Its all going to work!";
$data = array (
    'From' => $from,
    'To' => $to,
    'Body' => $body,
    'Url' => $CallURL,  

);
$post = http_build_query($data);
$x = curl_init($url );
curl_setopt($x, CURLOPT_GET, true);
curl_setopt($x, CURLOPT_RETURNTRANSFER, true);
curl_setopt($x, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($x, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($x, CURLOPT_USERPWD, "$id:$token");
curl_setopt($x, CURLOPT_POSTFIELDS, $post);
$y = curl_exec($x);
curl_close($x);
var_dump($post);
var_dump($y);
 ?>

然后我设置了一个 Amazon server EC2 ,并在其中放置了一些文件 (filezilla),它们也可以正常工作(我可以在浏览器中加载图像,并且可以正常工作)。

然后我试图把这个文件放在服务器上,发生了两件事。

  1. 当我将其设为index.php 并在那里浏览时,我可以看到一个空白 页面,但什么也没发生。
  2. 当我把它设为index.html 并在那里浏览时,我得到了这个文本(“这不是 Json,所以我不知道它是什么),而我 没有 得到也叫:

    $from, 'To' => $to, 'Body' => $body, ); $post = http_build_query($data); $x = curl_init($url); curl_setopt($x, CURLOPT_POST,真); curl_setopt($x, CURLOPT_RETURNTRANSFER, true); curl_setopt($x, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($x, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($x, CURLOPT_USERPWD, "$id:$token"); curl_setopt($x, CURLOPT_POSTFIELDS, $post); $y = curl_exec($x); curl_close($x); var_dump($post); var_dump($y); */ //twillio 调用 $id = "ACa015xx662d50dxxx454424b70xxxxxx"; $令牌 = “79fb4b00efxxc8exxxf772da6bxxxxxx”; //仅在 : 之后 $url = "https://api.twilio.com/2010-04-01/Accounts/$id/Calls.json"; $CallURL = "http://www.somewebsite.com"; $来自 = "+97223721333"; $to = “+ 971111111111”; // twilio 试用验证号 $body = "全部 去工作!”; $data = array ('From' => $from, 'To' => $to, 'Body' => $body, 'Url' => $CallURL, ); $post = http_build_query($data); $x = curl_init($url); curl_setopt($x, CURLOPT_GET, true); curl_setopt($x, CURLOPT_RETURNTRANSFER,真); curl_setopt($x, CURLOPT_SSL_VERIFYPEER, 错误的); curl_setopt($x, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($x, CURLOPT_USERPWD, "$id:$token"); curl_setopt($x, CURLOPT_POSTFIELDS, $post); $y = curl_exec($x); curl_close($x); var_dump($post); var_dump($y); ?>

那么,将其命名为 .php and .html 有什么不同?为什么其中一个是空白的,另一个有这个响应?

编辑

我尝试使用以下命令安装 curl:sudo apt-get install php5-curl(worked)

然后我测试了这个链接是否支持 curl: How to enable cURL extension on Amazon EC2 free tier 结果是它不被支持。 这是为什么 ?我已经安装好了。

【问题讨论】:

  • 其中一个是空白的,因为发生了错误。您的服务器可能没有安装curl 扩展,因此它无法执行代码。另一方面,.html 是浏览器解释为漂亮网页的简单文本 - 没有发生服务器端处理,您会得到文件中写入的内容,这就是它起作用的原因。
  • 得到了你。 php 已安装。所以我必须安装 curl ?
  • 服务器日志会告诉你到底出了什么问题,但我的预感是你缺少 curl 扩展。
  • 刚刚安装了 curl :sudo apt-get install php5-curl。还是行不通。我必须重置它还是什么?
  • @Mjh 请看我的编辑

标签: php amazon-web-services amazon-ec2


【解决方案1】:

更改文件扩展名会更改服务器在有人请求文件时处理文件服务的方式。例如。如果有人请求图像,它会将图像标头发送给接收器,以便它(通常是浏览器)知道将其显示为图像。如果有人请求视频,服务器将发送适当的标头以通知接收者视频正在传输中。

在您的情况下,从 PHP 更改为 HTML 将更改服务器处理它的方式,从将其解析为 PHP 文件到在将其更改为 .HTML 文件时不将其解析为 PHP 文件。这可能表示您的 PHP 代码中有错误,或者您的服务器没有正确处理 PHP 文件。当它是 HTML 文件时,您看到的输出是您的 php 代码被解析为纯文本。这是不好且不安全的,因为它可能会将您的密码输出给用户。

要检查您的 PHP 代码是否有错误,请查看 php.ini 中所述的错误日志目录中的错误日志。此外,在开发过程中,可能值得将 display_errors 设置为 on,这样您在遇到编码错误时就不会看到空白屏幕。

【讨论】:

    【解决方案2】:

    首先我必须添加 curl sudo apt-get install php5-curl

    然后,重启apache!!!

    sudo service apache2 restart
    

    没有重启 - 不工作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多