迁移到Windows计算机后,PHP App无法运行

时间:2009-07-22 17:03:13

标签: php mysql windows

在迁移到Windows Server 2003计算机后,完全在LAMP服务器上运行的PHP应用程序根本无法要求包含文件。例如,给定以下文件:

   include("connectme.php");
  echo "==== $SERVER_NAME, $USER, $PASSWORD";
  $sql="SELECT id, model
FROM `products`
WHERE acc_code IS NULL
OR acc_code =0";
  $prodset=mysql_query($sql);


  while($prod=mysql_fetch_array($prodset,MYSQL_ASSOC))
  {
      echo $prod[id].",".$prod[model]."<br>";
  }

虽然连接参数在包含的 connectme.php 文件中指定,但文件将因MySQL连接错误而失败。如果我对 include 行进行评论并对连接参数进行硬编码,则可以正常工作。

有什么想法吗?

由于

connectme.php 连接参数中的

更新:已定义并给定值。但由于某种原因,变量在包含文件范围内不可见。当我向 echo 添加一行时,变量$ SERVER_NAME,$ USER,$ PASSWORD都是空的。

9 个答案:

答案 0 :(得分:1)

原来,有些文件(包括connectme.php)使用短标签&lt;? ?&gt; ,由于服务器是新安装的PHP服务器(默认情况下不启用短标签),因此它包含 connectme.php 的完整来源没有解释。相当难以捉摸!

感谢大家的帮助!

答案 1 :(得分:0)

我不知道您的目录结构是什么,但您是否尝试过将相对路径作为测试?

如果它在同一目录中:

include(".\\connectme.php");

???

答案 2 :(得分:0)

这里有一些需要注意的事项:窗口中的斜线向另一个方向移动,并且还存在换行问题。尝试其他健全性测试,例如包含回声的文件以确定目录结构等。

答案 3 :(得分:0)

检查所包含文件的权限。您需要允许IUSR帐户的访问权限才能读取和执行。完成此操作后,您应该能够以包含方式访问该文件。

答案 4 :(得分:0)

这几乎可以肯定是一个include_path问题。您可以通过多种方式进行设置。

您可以使用

创建页面
<?php phpinfo(); ?> 

在其中查看当前包含路径。如果您使用的是Apache,则可以在页面,ini_set配置文件或php.ini文件中使用.htaccess进行更改。

你可以在这里看到更多:

http://us2.php.net/configuration.changes

答案 5 :(得分:0)

我会用require替换include,因为它不是你的脚本的可选项,如果文件不存在,它不仅仅是配置错误。

require "connectme.php";

这个connectme.php包含mysql_connect和mysql_select_db()?然后至少为连接代码添加一些基本的错误处理,并使其可以访问mysql链接资源。绝对最小版本

<?php
$mysql = mysql_connect('...', '...', '...') or die(mysql_error());
mysql_select_db('...', $mysql) or die(mysql_error());

然后使用此链接资源并向mysql_query添加错误处理。同样,最小版本

$prodset=mysql_query($sql, $mysql) or die(mysql_error());

答案 6 :(得分:0)

也许某些配置会覆盖php的默认包含路径,以确保当前目录位于include_path中,您可以尝试这样做:

set_include_path(get_include_path() . PATH_SEPARATOR . ".");

答案 7 :(得分:0)

您将相对路径传递给include()。它与当前工作目录相关。也许cwd不是你所期望的那样。一些额外的调试输出可以澄清这一点。

<?php
echo '<div>Debug: __FILE__=', __FILE__, '</div>';
echo '<div>Debug: cwd=', getcwd(), '</div>';
echo '<div>Debug: glob(*.php)=', join(', ', glob('*.php')), '</div>';
require "connectme.php";

答案 8 :(得分:0)

如果将connectme.php的内容复制到主文件中会发生什么?

猜测:由于linux和windows之间的终端线路不同,可能会出现问题吗?