Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 动态生成的XML文件不';无法在服务器上运行,但在本地主机上运行良好_Php_Xml_Dom - Fatal编程技术网

Php 动态生成的XML文件不';无法在服务器上运行,但在本地主机上运行良好

Php 动态生成的XML文件不';无法在服务器上运行,但在本地主机上运行良好,php,xml,dom,Php,Xml,Dom,我用php生成了一个XML文件。此文件在本地主机中完美地生成了xml输出,同时当我将其上载到服务器时,它失败了。 错误屏幕 这是代码 <?php include_once("database/db.php"); $sqlNews = "SELECT * FROM news"; $runSqlNews = mysql_query($sqlNews); while ($rowSqlNews = mysql_fetch_array(

我用php生成了一个XML文件。此文件在本地主机中完美地生成了xml输出,同时当我将其上载到服务器时,它失败了。
错误屏幕 这是代码

<?php  

    include_once("database/db.php");

    $sqlNews    =   "SELECT * FROM news";

    $runSqlNews =   mysql_query($sqlNews);

    while ($rowSqlNews  =   mysql_fetch_array($runSqlNews)) 
        $arrSqlNews[]   =   $rowSqlNews;

        header('Content-type: text/xml');
        header('Pragma: public');
        header('Cache-control: private');
        header('Expires: -1');
        echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";

        echo '<xml>';

    for($i=0;$i<count($arrSqlNews);$i++) 
    {
        echo "<news>";
            echo "<newsId>".$arrSqlNews[$i][id]."</newsId>";
            echo "<newsAuthor>".$arrSqlNews[$i][news_author]."</newsAuthor>";

            echo "<description>".$arrSqlNews[$i][news_description]."</description>";
            echo "<newsText> <![CDATA[".$arrSqlNews[$i][news_text]. "]]></newsText>";
            echo "<plainNewsDescription>".$arrSqlNews[$i][plain_news_description]."</plainNewsDescription>";
            echo "<plainNewsTitle>".$arrSqlNews[$i][plain_news_title]."</plainNewsTitle>";
            echo "<newsUrl> <![CDATA[". $arrSqlNews[$i][news_url]. "]]></newsUrl>";
            echo "<newsCategory> <![CDATA[". $arrSqlNews[$i][category]. "]]></newsCategory>";
            echo "<image>http://metroplots.com/images/members/".$arrSqlNews[$i][news_image]."</image>";
            echo "<createdOn>".$arrSqlNews[$i][created_on]."</createdOn>";
        echo "</news>";       
    }
        echo '</xml>';
?>

更改后的新xml文件

<?php
    ini_set('error_reporting', E_ALL);

    include_once("database/db.php");

    $dbConn     = new mysqli($dbHost, $dbUserName, $dbUserPasswrd, $database);;

    $sqlNews    = "SELECT id, news_author,news_description,
                          news_text, news_url, category, news_image, created_on
                     FROM news";

    $stmt   = $dbConn->prepare($sqlNews);
    $stmt->execute();

    $stmt->bind_result($id, $newsAuthor, $newsDescription, $newsText, $newsUrl, $Category, $newsImage, $createdOn);


    header('Content-type: text/xml');
    header('Pragma: public');
    header('Cache-control: private');
    header('Expires: -1');

    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    echo '<xml>';
    echo "<news>";

    while($stmt->fetch())
    {
        echo "<newsId>".$id."</newsId>";
        echo "<newsAuthor>".$newsAuthor."</newsAuthor>";
        echo "<description>".$newsDescription."</description>";
        echo "<newsText> <![CDATA[".$newsText. "]]></newsText>";            
        echo "<newsUrl> <![CDATA[". $newsUrl. "]]></newsUrl>";
        echo "<newsCategory> <![CDATA[". $Category. "]]></newsCategory>";
        echo "<image>http://metroplots.com/images/members/".$newsImage."</image>";
        echo "<createdOn>".$createdOn."</createdOn>";        
    }

    echo "</news>";       
    echo '</xml>';

    $stmt->close();
    $dbConn->close();
?>
fetch())
{
回显“$id.”;
echo“$newsAuthor.”;
echo“$newsDescription.”;
回声“;
回声“;
回声“;
回声“http://metroplots.com/images/members/“$newsImage。”;
回显“$createdOn.”;
}
回声“;
回声';
$stmt->close();
$dbConn->close();
?>

请告诉我哪里出错了。提前感谢

我怀疑你的上传工具不是以二进制安全的方式传输文件的。尝试比较本地计算机和远程计算机上副本的文件大小。

很难说这里到底出了什么问题。 对于调试,您可以添加
ini\u集(“错误报告”,E\u ALL)在脚本的开头或查看php错误日志

脚本体系结构中还有一些其他问题

  • 您不应再使用扩展名。使用或代替

  • 标题只能发送一次。将它们从循环中移到顶部

  • 为什么要重复两次结果?删除
循环的
,并将其内容移动到while循环中。在循环中,将变量
$arrSqlNews
替换为
$rowSqlNews
,并删除索引访问器
[$i]

简化示例

while( $rowSqlNews = mysqli_fetch_assoc( $mysqliResult ) ) 
{
    echo $rowSqlNews['yourdbCol1'];
}

您是否尝试过禁用PHP输出缓冲

在PHP.ini中:
output_buffering=Off
或注释掉现有设置:
;输出缓冲=打开


更改设置后不要忘记重新启动web服务器。

远程数据库上的
新闻
表中可能没有任何内容?抱歉。此表在DB上有1000条记录。您在查看页面源代码中看到了什么。我刚刚尝试过,它是空的。除了设置错误报告,您还应该显示错误,即
ini_set('display_errors','on')否它不是(.txt)文件。它是(.php)文件。毫无疑问。不过,您的文件内容是文本,可以以ASCII模式传输。谢谢您的回复。现在让我检查一下。+1今天我从你那里学到了mysqli。谢谢你。我按照上面的建议改变了一切。我添加了ini_集合(“错误报告”,E_ALL);在页面上没有区别。错误仍然与上面粘贴的屏幕截图相同…您可以更新问题中的代码并添加db.php以供审阅吗?仅供参考,标题未在while循环中发送Michel Feldheim,请按照建议检查最新更新的xml脚本。