폴더 권한 : chmod 777 -R /var/www/myproject

 풀더 소유자 : chown -R apache /var/www/myproject

 selinux 0

 

 

위에는 임시 방법이다. 해보고 다시 초기 상태로변경 후 원인 파악만

'IT > PHP' 카테고리의 다른 글

PHP 글자 자를때 글자 깨짐  (0) 2020.11.25
코드이그나이터4 url public 제거  (0) 2020.09.13
session_register 대체  (0) 2020.08.24

substr() 함수를 사용할경우 문자가 깨지는 경우가 있다.

바이트 단위로 문자를 자르기 때문에 인코딩에 따라 문자 길이가 달라서 깨지는 경우가 있다.

 

그럴 경우

iconv_substr("문자열", 시작위치, 자를 위치, "인코딩 방식");

 

ex)

$str_test = "테스트 글자";

iconv_substr($str_test, 0, 5, "UTF-8");

$str_test = "테스트 글자";
iconv_substr($str_test, 0, 5, "UTF-8");

 

'IT > PHP' 카테고리의 다른 글

C.I4 Cache unable to write to //writable/cache/ 오류  (0) 2021.01.30
코드이그나이터4 url public 제거  (0) 2020.09.13
session_register 대체  (0) 2020.08.24

프로젝트 루트 폴더 구조

- app

- public

- system

- writable

 

여기서 public에 들어가 index.php와 .htaccess을 복사해 프로젝트 루트에 붙여넣는다.

그리고 옮긴 index.phph에서

$pathsPath = realpath(FCPATH . '../app/Config/Paths.php');

$pathsPath = realpath(FCPATH . 'app/Config/Paths.php'); 로 변경한다.

'IT > PHP' 카테고리의 다른 글

PHP 글자 자를때 글자 깨짐  (0) 2020.11.25
session_register 대체  (0) 2020.08.24
'session_register' was removed in 5.4 PHP version 에러  (0) 2020.08.24
<?
	session_register("seesion_value");
	isset($_SESSION['seesion_value']);
?>

 

<?
	session_register("session_value");
	isset($_SESSION["session_value"]);
?>

아래로 변경해서 사용

system/Model.php

	protected function setTimes($data){
        $date = $this->setDate();
        $return_data = array();

        if ($this->useTimestamps && ! empty($this->createdField) && ! array_key_exists($this->createdField, $data))
        {
            $return_data[$this->createdField] = $date;
        }

        if ($this->useTimestamps && ! empty($this->updatedField) && ! array_key_exists($this->updatedField, $data))
        {
            $return_data[$this->updatedField] = $date;
        }

        return $return_data;
    }

 

insertBatch 수정

	public function insertBatch(array $set = null, bool $escape = null, int $batchSize = 100, bool $testing = false)
	{
		if (is_array($set) && $this->skipValidation === false)
		{
			foreach ($set as $key => $row)
			{
                $set[$key] = array_merge($set[$key], $this->setTimes($row));
				if ($this->cleanRules()->validate($row) === false)
				{
					return false;
				}
			}
		}

		return $this->builder()->testMode($testing)->insertBatch($set, $escape, $batchSize);
	}

 

파일 다운로드하기

<? namespace App\Controllers;

use App\Controllers\BaseController;

class Board extends BaseController
{
	public function files_download(){
        $path = "/public/file/test.txt";
		$fileName = "테스트 텍스트파일.txt"
        return $this->response->download(FCPATH.$path, null)->setFileName($fileName);
    }
}
?>

 

파일 다운로드 후 다시 View로 돌아가기

<? namespace App\Controllers;

use App\Controllers\BaseController;
class Board extends BaseController
{
	public function files_download(){
        $path = "/public/file/test.txt";
		$fileName = "테스트 텍스트파일.txt"
        $file_data = $this->response->download(FCPATH.$path, null)->setFileName($fileName);
        return $file_data;
    }
}
?>

 

매개변수를 이용하여 디비 조회 후 파일 다운로드 하기

<? namespace App\Controllers;

use App\Controllers\BaseController;
class Board extends BaseController
{
	/**
	 *  $file_arr->path	// 파일 위치
	 *  $file_arr->name // 다운로드 할 때 다운받고 싶을대 수정 할 파일명
	 *  FCPATH			// 프론트 컨트롤러의 디렉토리 경로 전역변수
	 **/
    public function filesDownload($id){
        $files = $this->File->find($id); // 파일 모델에 접촉하여 해당 키의 파일정보를을 가져온다

        $filesData = $this->response->download(FCPATH.$file_arr->path, null)->setFileName($file_arr->name);
        return $filesData;
    }
}
?>

파일 구조가 아래 형식으로 되어있을때

 

   

app

   Controllers

      User

        Home

   View

      User

         insert

   Config

      Routes

 

Home.php

<?php namespace App\Controllers;

class Home extends BaseController
{
	public function index()
	{
		return view('welcome_message');
	}

	//--------------------------------------------------------------------
    public function save($id = ''){
        $user_model = model('UserModel');


        if ( $id )
        {
        	// Updating
        	$user = $user_model->find($user_id);
            $user_post = new Board( $this->request->getPost());
            $user->name = $user_post->name;
            $user->passwd = $user_post->passwd;
            $user->email = $user_post->email;
        }else {
            // Create
            $user = new BoardArticle($this->request->getPost());

            $user->name = $user->name;
            $user->passwd = $user->passwd;
            $user->email = $user->email;
        }

        $user_model->save($board);

        return redirect()->route('/');
    }
}

 

Routes.php에 추가

$routes->group('board', function($routes) {
	$routes->post('/', 'Board');
	$routes->post('save', 'Board\Home::save');
	$routes->post('save/(:num)', 'Board\Home::save/$1');
}

 

+ 최근 게시물