如何修复PHP警告:file_get_contents?

时间:2011-09-28 18:47:04

标签: php windows xampp

我收到了以下警告:

Warning: file_get_contents(C:\xampp\htdocs\test/wp-content/themes/test\images) [function.file-get-contents]: failed to open stream: Permission denied in ..\plugins\theme-check\main.php on line 29

main.php的第29行读作:

$other[$filename] = file_get_contents( $filename );

以下是与$ files相关的代码:

$files = listdir( $theme );

$files = array_merge( listdir( $parent ), $files );

if ( $files ) {
        foreach( $files as $key => $filename ) {
            if ( substr( $filename, -4 ) == '.php' ) {
                $php[$filename] = php_strip_whitespace( $filename );
            }
            else if ( substr( $filename, -4 ) == '.css' ) {
                $css[$filename] = file_get_contents( $filename );
            }
            else {
                $other[$filename] = file_get_contents( $filename );
            }
        }

        // run the checks
        $failed = !run_themechecks($php, $css, $other);

据我所知,它的权限错误。由于该文件似乎无法访问该文件夹。我在Windows 7上使用XAMPP。我不知道如何更改Windows上的文件夹权限。

PS。请注意警告中的文件夹路径,它有\和/。

我不想关闭警告等,而是想要修复警告。

2 个答案:

答案 0 :(得分:2)

马克B击中头部。您需要添加一个测试来检查文件名是否是php函数is_dir($ filename)

的目录
   if ( $files ) {
    foreach( $files as $key => $filename ) {
        if ( substr( $filename, -4 ) == '.php' ) {
            $php[$filename] = php_strip_whitespace( $filename );
        }
        else if ( substr( $filename, -4 ) == '.css' ) {
            $css[$filename] = file_get_contents( $filename );
        }
        else {
            if(!is_dir($filename)) $other[$filename] = file_get_contents( $filename );
        }
    }

修改

如果您正在执行类似在线目录视图的操作。您可以更进一步,将目录包含在一个单独的数组中,然后对它们进行排序并首先列出它们。然后列出文件。我为动态画廊创造了类似的东西。

答案 1 :(得分:0)

尝试使用此PHP函数替换Windows路径: getcwd()。 您需要连接文件名。