标签: file-get-contents

PHP 5.3改变了file_get_contents的工作方式吗?

PHP有一个奇怪的问题file_get_contents.

过去,file_get_contents无论返回的HTTP状态代码如何,在远程文件上都会返回该文件的文本.如果我点击API并且它发回状态为500的JSON错误信息,则file_get_contents给我JSON(没有迹象表明遇到了错误代码).

我刚刚建立了一个Ubuntu 10.04服务器,这是第一个拥有PHP 5.3的Ubuntu.当出现500错误时,PHP会抛出警告,而不是给我JSON.因此,我无法解析JSON并提供一个很好的错误消息.

很高兴PHP注意到远程文件中存在错误,但是如果出现500错误,我甚至需要 JSON(特别是!).似乎没有办法将其关闭.有没有遇到过这个?有小费吗?

php file-get-contents

3
推荐指数
1
解决办法
3793
查看次数

检查file_get_contents何时完成

无论如何我可以检查file_get_contents何时完成加载文件,所以我可以加载另一个文件,它会自动完成加载一个文件,然后进入下一个文件?

php file-get-contents

3
推荐指数
1
解决办法
4270
查看次数

PHP 文件获取内容,http 版本

我正在使用 file_get_contents 函数来控制客户端,(例如http://ip:port/?light=on

在浏览器中使用相应的命令时它可以工作,当我将相同的 url 与 file_get_contents 函数结合使用时,它不起作用。

当我使用wireshark 请求时,我注意到浏览器使用的是http/1.1,而file_get_contents 使用的是http/1.0。

我相信 http 的版本是我的代码不起作用的问题,

如何在 de file_get_contents 函数中更改此版本的 http?或解决它?

php http file-get-contents

3
推荐指数
1
解决办法
3613
查看次数

如何使用 file_get_contents() 加载远程文件?

现在有点抓我的头了。
我正在尝试从远程 url 获取文件。我可以从本地文件中保存内容,但不能从远程文件中保存。

这有效:

file_put_contents(
    'file1.xml',
    file_get_contents('file2.xml')
);
Run Code Online (Sandbox Code Playgroud)

这不会:

file_put_contents(
    'file1.xml',
    file_get_contents('http://www.domain.com/xmlapi/search.aspx?query=places&lid=38')
);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我的其他脚本在第一次尝试时运行正常,但现在没有人会访问远程 url。
我最近开始在 Heart Internet 上托管我的新 php 文件。我在其他服务器上有类似的脚本,完全没有问题。

这是我得到的错误:

警告:file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/sites/mydomain/myfile.php on line 5`

警告:file_get_contents(http://www.domain.com/xmlapi/search.aspx?query=places&lid=38)[function.file-get-contents]:无法打开流:php_network_getaddresses:getaddrinfo 失败:名称或服务不是在第 5 行的 /home/sites/mydomain/public_html/myfile.php 中已知`

allow_url_fopen 被设定为 On

不同的域

php file-get-contents file-put-contents

3
推荐指数
1
解决办法
8291
查看次数

file_put_contents和file_get_contents耗尽内存大小

我有一些简单的尝试从一个文件写到另一个文件.

$content=file_get_contents("C:\Users\Borut\Desktop\sql_PW1\mm_ads (1).sql");
file_put_contents("C:\Users\Borut\Desktop\sql_PW1\New", $content);
Run Code Online (Sandbox Code Playgroud)

我读的文件大约是80M大,php中的内存限制是128M,但是我收到一个错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 80739522 bytes)
Run Code Online (Sandbox Code Playgroud)

所以即使我试图分配的内存实际上更小,内存也已耗尽?我可以通过增加内存限制来完成这项工作,但我想知道为什么它不能使用此限制.

php file-get-contents memory-limit

3
推荐指数
1
解决办法
9626
查看次数

PHP file_get_contents()和XML文件

在PHP中我想加载一个XML文件(作为文本文件)并在屏幕上显示其内容(作为文本).我在表单中有一个简单的XML

<root> <parent>Parent text. </parent></root>
Run Code Online (Sandbox Code Playgroud)

如果我使用

$myxmlfilecontent = file_get_contents('./myfile.xml');
echo $myfilecontent; 
Run Code Online (Sandbox Code Playgroud)

仅打印节点"父"的内容,它只打印"父文本",而不是整个文件内容.

php xml file-get-contents

3
推荐指数
2
解决办法
2万
查看次数

PHP 中的输出缓冲区与 file_get_contents

这两种获取文件内容的方式有什么区别?哪一种更好,更有效?我认为他们都获得了相同的结果,但我真的不知道哪种方法更好。

例如。

此代码使用输出缓冲来获取文件的内容:

ob_start();
include('foo/bar.tpl');
$output .= ob_get_contents();
ob_end_clean();
Run Code Online (Sandbox Code Playgroud)

此代码使用 file_get_contents 并获得相同的结果。

$output = file_get_contents('foo/bar.tpl');
Run Code Online (Sandbox Code Playgroud)

php templates output-buffering file-get-contents

3
推荐指数
1
解决办法
2369
查看次数

Twilio PHP API Librarie:警告:file_get_contents():SSL操作失败,代码为1

我通过composer安装了官方Twilio PHP API Librarie("twilio/sdk":"~3.12").

当我尝试使用测试凭据时使用API​​(例如发送短信)时,我收到错误:

警告:file_get_contents():SSL操作失败,代码为1. OpenSSL错误消息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败,在..vendor/twilio/sdk/Services/Twilio/HttpStream.php第62行

如果我尝试使用curl在终端发送短信 - 一切正常.

如何在不编辑Twilio PHP API Librarie代码的情况下修复它?

php ssl file-get-contents twilio

3
推荐指数
1
解决办法
6976
查看次数

无法使用 file_get_contents('php://input') 检索原始帖子数据

这是我的代码。我正在使用 post 方法发布我的数据。

$post_body = file_get_contents('php://input');
if(getenv('REQUEST_METHOD') == 'POST'){
    print_r( array( "3","3d"));
}
print_r($post_body);
Run Code Online (Sandbox Code Playgroud)

我正在使用 chrome 的邮递员来测试此代码,但它不打印发布数据,请参阅输出图像。

输出图像

我做错了什么???

编辑

为了展示我如何解决我的问题,我添加了这张图片。

显示

php post file-get-contents postman

3
推荐指数
1
解决办法
5352
查看次数

有没有更好的方法循环这些 PHP 代码,也许使用 foreach 循环?

file_get_contents用来获取远程定价(每天更新),用于substr仅保留我想要的部分(从输出中去除货币符号和其他数据并仅保留数字)并用于file_put_contents将其存储到我引用的缓存目录中到以后。

这就是我现在所拥有的:-

<?php

$cacheDirectory = $_SERVER['DOCUMENT_ROOT'] . '/cache/';

// Small Plan - US
$cachefile_SM_US = $cacheDirectory . 'SM_US.cache';

if(file_exists($cachefile_SM_US)) {
    if(time() - filemtime($cachefile_SM_US) > 1600) {
        // too old , re-fetch
        $cache_SM_US = file_get_contents('https://remotedomain.com/?get=price&product=10&currency=1');
        $substr_SM_US = substr($cache_SM_US,17,2);
        file_put_contents($cachefile_SM_US, $substr_SM_US);
        } else {
            // cache is still fresh
    }
} else {
    // no cache, create one
    $cache_SM_US = file_get_contents('https://remotedomain.com/?get=price&product=10&currency=1');
    $substr_SM_US = substr($cache_SM_US,17,2);
    file_put_contents($cachefile_SM_US, $substr_SM_US);
}

// Large Plan - US
$cachefile_LG_US = $cacheDirectory . …
Run Code Online (Sandbox Code Playgroud)

php foreach loops file-get-contents file-put-contents

3
推荐指数
1
解决办法
77
查看次数