【问题标题】:Is there anyway to make simpleXML work on web host无论如何要让simpleXML在网络主机上工作
【发布时间】:2010-09-19 16:01:49
【问题描述】:
    <?php
$twitter_url = 'http://twitter.com/statuses/user_timeline/ishrikrishna.xml?count=1';

$buffer = file_get_contents($twitter_url);

$xml = new SimpleXMLElement($buffer);

$status = $xml -> status;

$tweet =  $status -> text;

echo $tweet;

?>

我使用此代码获取推文,它在 localhost 上成功运行,但在我的虚拟主机上无法运行,我在两个虚拟主机服务上尝试了此脚本。

我注意到的问题是 file_get_contents()、simplexml_load_file() 等函数无法从存储在另一台服务器上的 xml 文件(例如 rss 文件)中获取数据。

【问题讨论】:

  • 看起来像是托管服务器上的某种配置问题。访问与文件操作相关的方法可能存在某种限制。
  • 你得到的确切错误是什么?
  • 虚拟主机上的空白网页,但本地主机成功检索推文。

标签: php simplexml file-get-contents


【解决方案1】:

我相信这意味着您关闭了 fopen URL 包装器。请参阅http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen 如果您使用的是共享网络服务器,您可能无法打开这些。

您也许可以使用 cURL 来获取远程页面:

$ch = curl_init('http://twitter.com/statuses/user_timeline/ishrikrishna.xml?count=1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$buffer = curl_exec($ch);

这只有在您的虚拟主机上安装并启用了 cURL 扩展程序时才有效。

请参阅 PHP cURL 文档:http://www.php.net/manual/en/book.curl.php

编辑:更正 curl_setopt 调用

【讨论】:

  • Curl 也不起作用,是否可以在网页上安装和使用我们自己的 php 版本,或者是否有任何方法可以通过 .htaccess 文件启用像 simplexml 这样的扩展。
  • 不,您只能在 php.ini 中启用 fopen 包装器,我希望将它们关闭的网络主机不允许您启用它们。您完全有可能无法从您的虚拟主机加载远程文件。我建议您联系您的虚拟主机并检查他们是否确实关闭了 allow_url_fopen。
  • 好的,我会联系他们的,谢谢你的帮助。
【解决方案2】:

SimpleXML 是 PHP 5 中的新功能。我认为几乎所有网络主机都安装了 PHP 5,但如果您的主机仍在使用 PHP 4,这可能是您的脚本无法运行的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多