0

我有两台服务器,一台生产和一台开发。两台机器都是 windows 机器,在网络上以同一用户身份运行 Apache。上周,用户的网络密码发生了变化,这时候事情就停止了。

好的,没问题,一旦确定发生这种情况,我只需更改服务上的用户/密码凭据,然后重新启动 Apache。

PHP 不想打开任何文件,甚至不想承认它们存在于生产机器上。但是开发机器上的一切都是花花公子。

出于说明目的,以下在开发服务器上可以正常工作,但不能在生产服务器上正常工作:

<HTML>
<?php
$filename = '\\\\petra\\operations\\test.txt';
if (file_exists($filename)) {
    echo "The file <u>$filename</u> exists";
} else {
    echo "The file <u>$filename</u> does <b>not</b> exist";
}
?>
</HTML>

在开发机器上,我得到了一个可爱的The file \\petra\operations\test.txt exists但在我的生产机器上,我变得不那么高兴了,The file \\petra\operations\test.txt does not exist 我可以指向网络上任何服务器上的任何文件,同样的事情也会发生。

两台机器上的硬件完全不同,但在软件方面它们非常相似。例如,Apache 配置和 php.ini 文件是精确的副本。

这与我之前提出的问题有关。当时,我认为这是一个错误的文件路径,或者可能是其他人弄乱的。确实如此(相对而言,密码已更改),但现在两台机器都知道新的用户凭据,并且 apache 已在两台机器上重新启动。

想法?什么会阻止 PHP 能够打开文件?

编辑:我认为这与文件的用户权限无关,就像这样。两台机器都以同一个用户运行 Apache,指向同一个网络上的同一个文件。

我确实在网络上的其他一些随机机器上设置了一个新的测试文件位置,然后我设置了非常宽松的权限。我的 php 现在调用这个: $filename = '\\\\procl35\\folder\\test.txt';我进入The file \\procl35\folder\test.txt does not exist生产服务器。

4

1 回答 1

0

我对此有一个解决方案。

首先,我应该提到生产服务器是由 IT 部门在服务器场中运行的。在上面的原始问题中,我说“我只需更改服务上的用户/密码凭据,然后重新启动 Apache。” 实际上,IT 更改了密码并重新启动了 Apache。这是语义上的差异,但事实证明在这里很重要。

今天早上,我问了 IT 部门的人是否对这个问题有任何想法。系统管理员四处寻找,意识到他实际上并没有更改用户密码,尽管他坚持要这样做。

我不会在这里把它扔到公共汽车下面。他们是忙碌的人,他们是人,这没关系。但是我会向未来的开发者提供这个解决方案:如果你遇到这种问题,我建议“重新更新”密码,因为它可能不是第一次发生的。也许他在不同的服务上更新了密码(无论如何也需要它)。可能他输入了,打错了一个字符,没有阅读失败信息,然后关闭了窗口。不管怎样,这并不重要。

解决方法是更新服务中的密码。

干杯!

于 2013-09-13T20:21:57.227 回答