我有这个:
<?php
$phpjson = (file_get_contents('icons_ajax.php?alls'), true);
var_dump ($phpjson);
?>
它返回:
警告:file_get_contents(icons_ajax.php?alls)[function.file-get-contents]:无法打开流:第184行/home/flamenco/public_html/icons_cogo_20.php中没有此类文件或目录 NULL
我怀疑这是因为JSON尚未加载。
任何让PHP等到加载JSON的方法吗?
这是包含问题的测试页:http://flamencopeko.net/icons_cogo_20.php
答案 0 :(得分:2)
没有“JSON尚未加载”的事情
在var_dump
完成之前,file_get_contents
不会被调用
您的错误如下所示:没有此类文件。尽量提供完整的路径。
并替换
$phpjson = (file_get_contents(file_get_contents('icons_ajax.php?alls'), true));
与
$phpjson = file_get_contents('http://full.path.to/icons_ajax.php?alls');
答案 1 :(得分:2)
首先要做的事情是:嵌套file_get_contents()
几乎永远不会解决问题的正确方法。
在英语中,您的代码正在做的是:
这意味着您尝试获取的路径是持久的,并随着时间的推移而变化。虽然这在技术上并不是无效的,但它几乎肯定是应用程序设计不良的症状,数据库将是更合适的解决方案,
接下来要注意的是没有完全限定的URL(包括方案和域),你的路径是引用本地文件系统上相对于当前工作目录的东西,并且 - 至关重要的 - 查询字符串,如?alls
不适用于本地文件系统。在上下文中,您最有可能尝试使用它($_GET
),这是HTTP协议的构造。
如果您尝试从远程服务器加载一些JSON,则需要设置如下代码:
$json = file_get_contents('http://remotedomain.com/path/to/file.json');
$object = json_decode($json);
// do stuff with object
答案 2 :(得分:0)
$phpjson = (file_get_contents(file_get_contents('icons_ajax.php?alls'), true));
PHP不是异步的,因此file_get_contents()
将阻塞直到它完成,然后var_dump()
将被调用,所以你可能只是在你指定的路径上没有文件。