본문 바로가기

php23

[라라벨 Laravel][Mysql] String data, right truncated: 1406 Data too long for column 'content' at row 1 개요 'Query Exception SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'content' at row 1' 에러가 자꾸 발생되어서 확인하게 되었습니다. 본문 Laravel 5.4.* 버전 사용중이고, PHP 7.1.* 사용중이고, Mysql 은 5.5.* 버전 사용중입니다. 문제가 뭘까? 고민해봤는데 이 경우에는 text 타입이 문제였습니다. 길이가 긴 문자열을 넘기게 되었는데, 저장할 수 있는 크기를 넘어섰기 때문에 발생하였습니다. Laravel 의 기본 샘플을 따라서 테스트 하는 중에 생성했던 테이블의 컬럼 중에 text 타입이 문제가 있었던 것으로 보입니다. 제 경우에는 posts 테이블의 cont.. 2017. 7. 29.
[아파치 Apache] 미디어위키 사용 중에 500 에러 발생시 (ModSecurity 문제) MULTIPART_UNMATCHED_BOUNDARY 개요 미디어위키 사용 중에 500 Internal Server Error 가 발생... 미디어위키 에서 글을 작성하고, 저장 버튼을 눌렀습니다. Submit 이 되었는데, 난데없이 '500 Internal Server Error' 가 발생했습니다. (그리고 작성한 그토록 긴 글은...) 무엇이 문제인가? 하나씩 찾아가보려고 합니다. 원인을 추리는 과정 예상 1. 사진 이미지 용량이 커서 발생되는 경우. php.ini 설정에서 upload_max_filesize = 2M 같은 설정값을 크게 변경하면 됩니다. 이 값은 적절하게 변경해놓으면 됩니다. 예상 2. 문자열이 에러를 유도한다면 저의 error_log 를 확인해봅니다. ModSecurity: Access denied with code 44 (phase.. 2017. 4. 20.
[PHP] 클라우드 플레어 유저 아이피 HTTP_CF_CONNECTING_IP $_SERVER['REMOTE_ADDR'] 를 잘 사용하고 있었는데, 클라우드플레어 를 적용시키니, 엉뚱한 아이피주소를 받아온다. 검색해보니, $_SERVER["HTTP_CF_CONNECTING_IP"] 를 쓰라고 한다. 참고할 만한 주소는http://stackoverflow.com/questions/14985518/cloudflare-and-logging-visitor-ip-addresses-via-in-php 가장 높은 추천을 받은 글에서는 다음과 같은 설명이 적혀 있다. if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) { $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];} ... 더 검색하는 와중에 $_SE.. 2017. 2. 18.
[PHP][mysql] inet_aton('::1') 에러 잘 되던게 갑자기 에러가 났다. inet_aton('::1') 라는 식의 로그 가 찍혀 있었다. 생각을 해보면, inet_aton 이라는 것은 mysql 에서는 IPv4 주소를 integer unsigned 로 바꿔주는 함수 로 기억한다. 문제는 저 안에 들어간 변수가 ::1 이라는 것이라는 점이다. ::1 이라는 아이피는 IPv6 에서 로컬을 뜻하는 주소 이다. IPv4 에서는 127.0.0.1 이었던 값이 IPv6 에서는 ::1 이라는 값이 된 셈이다. 해결책은 두 가지로 볼 수 있겠는데,'IPv6 이 지원되도록 소스를 변경' 하는 방법 과 '아파치 설정을 변경' 하는 방법이 있다. 개인적으로는 검색해서 찾아본 결과, httpd.conf 파일을 열어서 보면, Listen 80 이라고 되어 있는 부분이.. 2017. 2. 11.
[PHP] Deprecated features in PHP 7.0.x 관련링크 : http://php.net/manual/en/migration70.deprecated.php Deprecated features in PHP 7.0.x ¶ PHP 4 style constructors ¶ PHP 4 style constructors (methods that have the same name as the class they are defined in) are deprecated, and will be removed in the future. PHP 7 will emit E_DEPRECATED if a PHP 4 constructor is the only constructor defined within a class. Classes that implement a __constru.. 2016. 10. 20.
[PHP] Deprecated features in PHP 5.6.x 관련 링크 : http://php.net/manual/en/migration56.deprecated.php Deprecated features in PHP 5.6.x ¶ Calls from incompatible context ¶ Methods called from an incompatible context are now deprecated, and will generate E_DEPRECATED errors when invoked instead of E_STRICT. Support for these calls will be removed in a future version of PHP. An example of such a call is: The above example will output: Depr.. 2016. 10. 20.
[PHP] Deprecated features in PHP 5.5.x 관련 링크 http://php.net/manual/en/migration55.deprecated.php ------------ 원문 -------------- Deprecated features in PHP 5.5.x ¶ ext/mysql deprecation ¶ The original MySQL extension is now deprecated, and will generate E_DEPRECATED errors when connecting to a database. Instead, use the MySQLi or PDO_MySQL extensions. preg_replace() /e modifier ¶ The preg_replace() /e modifier is now deprecated. Inste.. 2016. 10. 20.
[PHP] PDO BindValue 와 BindParam 의 차이 $abc = 'apple'; PDO::BindValue(':aaa',$abc); PDO::BindParam(':aaa',$abc); $abc = 'banana'; 대충 이런 상황이 있다고 한다면. (위의 예시는 대충 보기 쉽게 생략해서 쓴 구문입니다) BindValue 는 apple 이라는 값이 들어가고, BindParam 에는 banana 라는 값이 들어가게 된다. 이유인즉슨, BindValue 는 값만 복사되서 대입되는 것이고. BindParam 은 포인터값이 들어가는 개념이기 때문이다. 이후에 execute(); 를 호출할 때까지 변수에 있던 값이 들어가는게 BindParam 이다. Java 에서도 Prepared 하는 방식에서는 마찬가지의 개념이 있던 걸로 기억한다. 이렇게 나눠놓는 이유는, 잘 .. 2016. 2. 9.
[PHP, MYSQL] PHP + MYSQL 연결 테스트 예제 (pdo 방식) (업데이트 2017-11-24) 준비 php.ini 에서 php_pdo_mysql.dll 이 주석해제 되어 있어야 합니다. extension=php_pdo_mysql.dll 샘플 코드 /** * pdo 클래스 방식 * 샘플예제 입니다. 대충 어떻게 동작되는지 공부하시기에 좋게 정리해놓았습니다. * 각각의 값을 변경하고 연결테스트 하기에도 좋습니다. */ //0. 설정 $mysql_hostname = 'localhost'; $mysql_username = 'username'; $mysql_password = 'password'; $mysql_database = 'database_name'; $mysql_port = '3306'; $mysql_charset = 'utf8'; //1. DB 연결 $dsn = 'mysql:host='.$mys.. 2016. 2. 5.
[PHP, MYSQL] PHP + MYSQL 연결 테스트 예제 (mysqli 클래스 방식) (업데이트 2017-11-24) 준비 php.ini 에서 php_mysqli.dll 이 주석해제 되어 있어야 합니다. extension=php_mysqli.dll 샘플 코드 /** * mysqli 클래스 방식 * 샘플예제 입니다. 대충 어떻게 동작되는지 공부하시기에 좋게 정리해놓았습니다. * 각각의 값을 변경하고 연결테스트 하기에도 좋습니다. */ //0. 설정 $mysql_hostname = 'localhost'; $mysql_username = 'username'; $mysql_password = 'password'; $mysql_database = 'database_name'; $mysql_port = '3306'; $mysql_charset = 'utf8'; //1. DB 연결 $connect = new mysqli($mysql.. 2016. 1. 30.