테스트 사이트 - 개발 중인 베타 버전입니다

php 8.0 으로 업그레이드후 발생하는 에러입니다 채택완료

엘지비티 1년 전 조회 2,036

</p>

<p>/**

     * 배열을 지정한 파일로 저장 - 폴더에 웹서버의 쓰기 권한이 있어야 함

     */

    public function save_file($outvar, $filename, $info=array(), $int=false) {

        $fp = @fopen($filename, 'w');

        $contents  = "<?php\n";

        $contents .= "if (!defined('_EYOOM_')) exit;\n";

        $contents .= "\$" . $outvar . " = array(\n";

        if ($info != NULL) {

            foreach ($info as $key => $value) {

                if (!is_array($value)) {

                    // 키값으로 정수를 허용하지 않는다면

                    if (!$int) {

                        if (!is_int($key)) {

                            $contents .= "\t\"" . addslashes($key) . "\" => \"" . addslashes($value) . "\",\n";

                        }

                    } else $contents .= "\t\"" . addslashes($key) . "\" => \"" . addslashes($value) . "\",\n";

                } else {

                    $arr = '';

                    foreach ($value as $k => $v) {

                        if (!$int) {

                            if (!is_int($key)) {

                                $arr .= "\"" . addslashes($k) . "\" => \"" . addslashes($v) . "\",";

                            }

                        } else $arr .= "\"" . addslashes($k) . "\" => \"" . addslashes($v) . "\",";

                    }

                    if ($arr) {

                        $arr = substr($arr,0,-1);

                        $contents .= "\t\"" . addslashes($key) . "\" => array(" . $arr . "),\n";

                    }

                }

            }

        }</p>

<p>        $contents .= ");\n";

        @fwrite($fp, $contents);

        @fclose($fp);

        @chmod($filename, 0644);

    }

 

PHP Fatal error:  Uncaught TypeError: fclose(): Argument #1 ($stream) must be of type resource, bool given in /home/www/eyoom/class/qfile.class.php:93
 

php 7.4 에서 8.0 으로 업그레이드를 했는데 위와같은 오류가 나옵니다

 

해당 구문은   @fwrite($fp, $contents);     @fclose($fp);    이 두개 입니다.

어떻게 수정해야 오류가 안날까요?

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
1년 전

</p>

<p>...</p>

<p>        $fp = @fopen($filename, 'w');

        

        if ($fp === false) {

            return;

        }

        

        $contents  = "<?php\n";</p>

<p>...</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인