0

使用Laravel框架,我使用该File::get()方法访问目录中的 CSS 文件,public/css对于既存在又具有内容的文件返回 null:

PHP代码是:

private static $css_files = array(
                        "main"   => 'css/main.css',
                        "layout" => 'css/layout.css'
                        );

public static function get_css ($vars) {

    $file     = self::$css_files[$vars["file_name"]];
    $contents = File::get(path('public').$file, "File Not Found ($file)");

    return json_encode(array("file" => path('public').$file,
                         "contents" => $contents));

}

返回到我的网页(从 Chrome 中的 js 控制台):

Object {file: "/var/www/sites/public/css/main.css", contents: null} 

该文件存在:

user@pc:~$ ls /var/www/sites/public/css/main.css
/var/www/sites/public/css/main.css

有内容:

user@pc:~$ wc -l /var/www/sites/public/css/main.css
441 /var/www/sites/public/css/main.css

并且该方法不会触发$default参数,File::get()因为如果文件不存在(使用其他有效和无效名称进行测试),它应该触发参数,因此它肯定找到了文件。

我已经在同一个 PHP 方法 ( get_css())、其他目标目录和同一目录中尝试了其他文件,它返回这些文件的内容没有问题。

CSS文件的权限没问题:

user@pc:~$ ls -hal /var/www/sites/public/css/main.css 
-rw-r--r-- 1 www-data root 6.5K May 25 14:01 /var/www/sites/public/css/main.css

一个单独的 PHP 脚本,从命令行运行返回内容:

<?php    
  echo file_get_contents("/var/www/sites/public/css/main.css");
?>

这是前几行main.css

user@pc:~$ head /var/www/sites/public/css/main.css

/* Estilos principais*/

    body{
    background-color:#c5c5c5;
    font-family:sans-serif;
    font-size:1.5em;
    color:#999;
    text-align:center;
    margin:0;

这是一个错误吗?是否有任何原因(我现在看不到)不喜欢 CSS 文件的内容?

4

1 回答 1

6

明白了,其中两个文件不是 utf-8,并且json_encode()被非 utf-8 内容阻塞,然后返回,null问题不在.File::get()json_encode()

结案!

于 2013-05-26T15:55:16.440 回答