Php在localhost上工作但不在服务器上工作

时间:2013-05-04 11:20:12

标签: php html

我一直在研究一些代码并在localhost上测试它,一切正常,但是当我将它上传到我的服务器时,它不会超出我的php标签。也没有出现任何错误。我检查了两个php版本,在localhost上运行版本5.4.7,在服务器上运行它的版本5.3.21。也许这是导致问题的原因?我应该在phpinfo()中寻找一些东西吗?我在代码中遗漏了什么吗? 这是代码:

    <!DOCTYPE html>
    <?php phpinfo(); ?>
    <html>
    <head>

    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <meta charset="utf-8">

    <style>
     body { background:black;}
    .toggle { display:none; }

    p {  
  width:570px;
  text-align:justify;
  color:#686868;
  font-family:Georgia, serif;
      }

    h2 { color:black; } 

    button { background:#686868; 
     border:none;
     font-family:Georgia, serif;
     width:570px;
   }
    </style>
    </head>

    <body>
    <?php 
    include('sql.php');

    $i = 0;

    while($i < count($rows)) {
    echo "
    <div>
        <button class='trigger'>
    <table width='100%'>
    <tr>
        <td width='20%'><img src='http://localhost/app-side/Icons/bar_icon.png' />             
                  </td>
        <td width='80%'><h2>{$rows[$i]['titel']} </h2></td> 
    </tr>
    </table>

</button>
       <div class='toggle'>
     <p>
       {$rows[$i]['info']}
     </p>   
   </div>
    </div>";


    $i++;
    }?>

    </body>
    <script>

    $('.trigger').click(function() { 

    $(this).siblings('.toggle').slideToggle('fast');

    });

   </script>
   </html>

当我运行它时,它会显示黑色背景(正如它所假设的那样)但是我的php开始标记之外的所有内容都会被切断。 我还试图强制我的while循环循环10次,并删除了从我的数据库获取数据的部分,看看它是否是一个与mysql相关的问题。我可以断定它不是。

3 个答案:

答案 0 :(得分:2)

以下问题是:

<img src='http://localhost/app-side/Icons/bar_icon.png

无法加载图像,因为localhost指的是客户端的本地计算机(浏览器运行的位置)而不是服务器。通常网站中的此类网址被视为恶意网站;)

使其适用于localhostserver的解决方法是使用相对路径。这可以相对于您的文档或相对于服务器的DOCUMENT_ROOT。我使用了第二种方法,因为我不知道你的php文件在服务器上的位置。

包含相对于DOCUMENT_ROOT的链接的解决方案:

替换:

<img src='http://localhost/app-side/Icons/bar_icon.png

通过

<img src='/app-side/Icons/bar_icon.png

答案 1 :(得分:0)

我唯一可以假设的是$rows为空,因此以下代码无法运行:

// count($rows) could be equal to 0
while($i < count($rows)) { // this condition becomes false in that case
    echo "
    <div>
        <button class='trigger'>
    <table width='100%'>
    <tr>
        <td width='20%'><img src='http://localhost/app-side/Icons/bar_icon.png' />             
                  </td>
        <td width='80%'><h2>{$rows[$i]['titel']} </h2></td> 
    </tr>
    </table>

</button>
       <div class='toggle'>
     <p>
       {$rows[$i]['info']}
     </p>   
   </div>
    </div>";


    $i++;
    }

更新

根据您的评论,可能由于sql.php内部的某些内容,很可能是数据库连接问题。尝试将error_reporting(E_ALL)放在页面的最顶部,看看是否打印出任何错误。

答案 2 :(得分:0)

您是否检查过sql.php以确保更改它以匹配您的实时服务器(从localhost变量更改)还检查您的数据库字段名称与您的脚本的拼写错误。

[code] 
{$rows[$i]['titel']} </h2></td>
[\code]

是否应该阅读:     [代码]

{$rows[$i]['title']} </h2></td>

[\code]

如果您的数据库字段名称是“title”和 您正在尝试从名为的字段中获取数据 “titel”比那可能导致你的错误。

我希望有帮助