我正在使用这段代码:
$DataSourceName = "..\Log4OM\Log4OM-Active.SQLite";
if(!file_exists($DataSourceName))
{
$Msg = sprintf("%s does not exist", $DataSourceName);
die($Msg);
}
该文件确实存在,并且该路径一直有效到今天早上。现在测试失败并且应用程序死亡。 "is_file"展会再好不过了。
我也使用这段代码:
$connection = new PDO("sqlite:".$DataSourceName);
// Set errormode to exceptions
$connection->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
这实际上确实打开了文件并且应用程序正常运行。我知道这一点,因为我击败了第一次尝试它的测试。不幸的是,第一个测试必须在我到达“$connection =”行之前通过。
我还尝试了 fopen,它无法打开文件。文件名实际上是真实文件的硬链接(hard link),但是替换真实文件名也有同样的问题。文件权限看起来是正确的,和几天前一样。
最佳答案
不要依赖目录“行走”。始终指定您开始的根目录(例如)__DIR__
$DataSourceName = __DIR__ . "\..\Log4OM\Log4OM-Active.SQLite";
if(!file_exists($DataSourceName))
{
$Msg = sprintf("%s does not exist", $DataSourceName);
die($Msg);
}
关于php - file_exists & is_file 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45939505/