Php 测试通过,但不在浏览器中工作

Php 测试通过,但不在浏览器中工作,php,arrays,unit-testing,mongodb,array-difference,Php,Arrays,Unit Testing,Mongodb,Array Difference,我正在使用mongo数据库和PHP将文件元信息与文件目录进行比较,以查看缺少的内容。然后,我们返回一个文件和数据库的关联数组,以查看丢失了什么以及从何处丢失 注意:您不需要了解mongo就可以帮助我 例如,如果我从目录中删除一个文件,但数据库中有一个条目,我的数组将如下所示: array(2) { 'File System' => array(1) { [0] => string(28) "50e72bce045aca4c04000004.txt" }

我正在使用mongo数据库和PHP将文件元信息与文件目录进行比较,以查看缺少的内容。然后,我们返回一个文件和数据库的关联数组,以查看丢失了什么以及从何处丢失

注意:您不需要了解mongo就可以帮助我

例如,如果我从目录中删除一个文件,但数据库中有一个条目,我的数组将如下所示:

array(2) {
  'File System' =>
  array(1) {
    [0] =>
    string(28) "50e72bce045aca4c04000004.txt"
  }
  'Database' =>
  array(0) {
  }
}
此检查的代码如下所示:

public function compareDatabaseToDirectory(){
    // Fetch all file meta information
    $files = $this->_model->fetchAll(array());

    // Create a file based on id and extension.
    foreach($files as $id=>$model){
       $dataBaseEntries[] = $id . $model->fileExtension;
    }

    // Get all files in our directory
    $directoryFiles = preg_grep('/^([^.])/', scandir($this->getDestination()));

    // Get the differneces of files
    $differences = array_diff($dataBaseEntries, $directoryFiles);

    // Check if missing from database OR missing from file system
    $missingFromDataBase = array_diff($differences, $dataBaseEntries);
    $missingFromFileSystem = array_diff($differences, $directoryFiles);

    // Create an associative array
    $filesMissing = array(
          'File System' => $missingFromFileSystem,
          'Database' => $missingFromDataBase
   );

   // Return results.
   return $filesMissing;
}
我们在这里所做的就是使用mongo id并将其附加到文件扩展名以创建所述文件

我们将文件数组与文件目录中的数组进行比较,并返回差异

在我的测试中,我们所做的就是:

public function testComapreDatabaseToFileSystemMissingFile(){
    $this->resetNoSqlDatabase();

    unlink(APPLICATION_PATH . '/data/uploadedFiles/testing/50e72bce045aca4c04000004.txt');
    $result = $this->_file->compareDatabaseToDirectory();

    $expectedArray = array(
        'File System' => array(
            '50e72bce045aca4c04000004.txt'  
        ),
        'Database' => array(),                      
    );


    $this->assertEquals($result, $expectedArray);

}
这将返回您在上面看到的数组。然而,如果我在浏览器中复制相同的概念,您在上面看到的阵列将是空的,而不应该是空的


有什么想法吗?

这是一个文件夹权限问题。我们在将文件夹设置为0777之前创建了该文件夹。

这是一个文件夹权限问题。在将文件夹设置为0777之前,我们创建了该文件夹。

我将检查“apache”用户是否具有对包含这些文件的文件夹的读取权限。可能会解释CLI和browser之间的区别浏览器的所有者是www数据,它有0777,而测试者是我:adam,他也有0777,所以我们都有读、写和执行的权限。还有其他想法吗?我会检查“apache”用户是否具有对包含这些文件的文件夹的读取权限。可能会解释CLI和browser之间的区别浏览器的所有者是www数据,它有0777,而测试者是我:adam,他也有0777,所以我们都有读、写和执行的权限。还有其他想法吗?