2021. 8. 10. 11:30

PHP로 파일전송 만들고, 분명히 됬었는데....

 

어떤파일만 안되면, 파일 용량 제한 세팅을 확인해봐라.

 

기본, 2Mb 로 잡혀있을 확율이 크다.

 

> vi /etc/php.ini

치고 들어가서, 

/ 명령어로 검색해보자.

 

upload_max_filesize = 2M

//PHP 파일 업로드 최대용량

 

//위에 upload_max_filesize만 하고, 이거 안해서 안될수도 있으니, 밑에 세팅도 꼭 해주기

post_max_size = 8M

//POST 최대 전송 가능 용량

 

 

max_file_uplaods = 20

//단일 요철ㅇ을 통해 업로드할 수 있는 최대 파일 수

 

:wq 로 저장하고 나와서.

아파치 재실행해주기

> systemctl restart httpd.service

 

 

그외 다른 세팅들은 아래 블로그에서 참고 하시길

https://m.blog.naver.com/woaksdl14/221924259293

 

 

 

Posted by Tyson
2019. 7. 22. 22:19

There is something wrong with your system - please check that LD_LIBRARY_PATH includes the directory with Oracle Instant Client libraries

 

php로 하나 만들어서 crontab 사용해서 매일 자동으로 돌게 하고 싶은데..

 

위 에러가 나면서 안되는데....

 

미치겠더군..... 환경설정, oci8, 아파치유저 추가등등...다 했는데도 안된다가....

 

이게 php 그냥 실행하면 되는데, crontab으로 하니까, 안되더라...

 

결국 crontab사용할때, 환경변수를 못가져와서 그런거 같드라..

 

그래서, php소스에 

putenv("ORACLE_HOME=/opt/app/oracle/product/11.2.0/db_1"); putenv("LD_LIBRARY_PATH=/opt/app/oracle/product/11.2.0/db_1/lib:/lib:/usr/lib");

 

이렇게 넣어주니까 불러온다...

 

참고url:

https://stackoverflow.com/questions/14605099/oci-connect-works-only-from-command-line

Posted by Tyson
2019. 7. 22. 22:15

failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known

 

API 만드는데, url로 가져오는건데, 못가져오고, 이런게 뜨는데, 이거는 네임서버 설정을 해줘야한다.

$ vi /etc/resolv.conf

에서 

 

nameserver 8.8.8.8

nameserver 8.8.4.4

options rotate

options timeout:3

 

이래도 안되면, 

 

$ setsebool -P nis_enabled 1

$ setsebool -P httpd_can_network_connect 1

위에꺼를 해줘서 풀어준다.

 

Posted by Tyson
2019. 7. 22. 22:09

오라클 DB에

 

Insert하는데,

아래같은 Warning이 계속 나와서,

 

Strict Standards: Only variables should be passed by reference 라는 에러가 계속 나와서,

 

$value['name'] 를 바로 썼다가, 

아래처럼 바꿔서 다시 하니 에러가 안뜨더라...

(string) 해줌....

 

$value = (string) $value['name'];

 

oci_bind_by_name($stid2, ":value", $value);

Posted by Tyson
2019. 7. 22. 17:10

 

 

$json_string = file_get_contents($api_url);

 

또는

 

$curl =curl_init();
curl_setopt($curl,CURLOPT_URL, $api_url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);

$xml = curl_exec($curl);

 

로 $api_url에 경로주소 던져 주고 값 받아오기.


$result_xml = simplexml_load_string($xml);

Posted by Tyson
2019. 7. 22. 16:43

api로 json 값을 가져와서 계속 decode 하는데 Null값이 뜨고, 

 

안된다고 해서......

 

찾아보니...

결국

null 또는 스페이스같은게 들어가서 안되는거였다.

 

$json_string = file_get_contents($api_url);

$data = json_decode( preg_replace('/[\x00-\x1F\x7F]/u', '', $json_string), true );

 

위처럼 preg_replace 써서, 한번 정리해주니까. 먹힌다...

 

참고, url

https://stackoverflow.com/questions/2410342/php-json-decode-returns-null-with-valid-json

 

 

처음에 아래처럼썼었는데,

$data = json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string), true );

댓글에 누가 머라고 해서, 찾아보니, UTF-8은 

$string = preg_replace('/[\x00-\x1F\x7F]/u', '', $string);

이렇게 해야한다..

https://stackoverflow.com/questions/1176904/php-how-to-remove-all-non-printable-characters-in-a-string

 

'컴퓨터 > PHP' 카테고리의 다른 글

Strict Standards: Only variables should be passed by reference 에러  (0) 2019.07.22
api url 불러오기  (0) 2019.07.22
php 파일이동  (0) 2018.08.28
php 메일 보내기  (0) 2018.08.28
php 웹서버 절대경로 찾기  (0) 2018.08.28
Posted by Tyson
2018. 8. 28. 18:26

php에서 파일 이동하고 싶은데, copy하고, unlink해서 삭제하라는데,


복잡해서,


그냥 rename 함수 쓰면 된다.



<?

rename ("/home/test.txt", "/home/aaa/test.txt"); 


?>


위처럼 하면 move가 된다.

'컴퓨터 > PHP' 카테고리의 다른 글

api url 불러오기  (0) 2019.07.22
php json decode 시 에러 또는 Null뜰때.  (0) 2019.07.22
php 메일 보내기  (0) 2018.08.28
php 웹서버 절대경로 찾기  (0) 2018.08.28
crontab php 실행시 파일 경로  (0) 2018.08.28
Posted by Tyson
2018. 8. 28. 18:21

PHP 데이터 만들어서 메일로 보내고 싶어서, 찾은건데,


다른것보다 이게 좀 편해서 이거 사용법올려본다.


이거는 설치할것도 없이, 그냥 include 하면 된다.




밑에 블로그에서 퍼온거다

http://b.redinfo.co.kr/87


이건 메일 파일


Sendmail.php



위 파일을 다운 받고,


php에서 불러온다.


밑에글은 블로그에서 퍼온거~



 기본적으로 메일기능을 사용하기 위해선 클래스 파일을 추가한뒤 클래스 객체를 변수에 선언해야한다. 선언하는 방법은 아래와 같다.


<?php /* 클래스 파일 로드 */ include "Sendmail.php"; /* 클래스 객체 변수 선언 */ $sendmail = new Sendmail(); ?>


 만약 설정값을 넘겨주어야 한다면 아래와같이 필요한 설정값을 배열로 넘겨주면된다.  아래의 예제에서는 전부다 넘겨주었지만, 기본적으로 생성자에서 자동적으로 설정된 값만 초기화 시키기 때문에 전부다 넘겨줄 필요없이 필요한 값만 넘겨주면 된다. 한가지 명심할점은 배열원소 첨자명은 주석에 나온 명칭처럼 반드시 일치하여야 한다.


<?php /* 클래스 파일 로드 */ include "Sendmail.php"; /* + host : smtp 호스트 주소 + smtp_id : smtp 계정 아이디 + smtp_pw : smtp 계정 비번 + debug : 디버그표시기능 [1 : 활성 0 : 비활성] + charset : 문자 인코딩 + ctype : 메일 컨텐츠의 타입 */ $config=array( 'host'=>'ssl://smtp.gmail.com', 'smtp_id'=>'example@gmail.com', 'smtp_pw'=>'password', 'debug'=>1, 'charset'=>'utf-8', 'ctype'=>'text/plain' ); $sendmail = new Sendmail($config); ?>


 send_mail() - 메일보내기


 이 함수는 메일을 보내는 함수로 아래와 같은 인자값을 받는다. 기본적으로 앞쪽의 4개의 인자값들은 필수로 넣어주어야한다. 옵션의 경우 설정할 옵션값이 있을 경우에만 추가해 주면 된다.


<?php /* 클래스 파일 로드 */ include "Sendmail.php"; /* 클래스 객체 변수 선언 */ $sendmail = new Sendmail(); /* + $to : 받는사람 메일주소 ( ex. $to="hong <hgd@example.com>" 으로도 가능) + $from : 보내는사람 이름 + $subject : 메일 제목 + $body : 메일 내용 + $cc_mail : Cc 메일 있을경우 (옵션값으로 생략가능) + $bcc_mail : Bcc 메일이 있을경우 (옵션값으로 생략가능) */ $to="hgd@example.com"; $from="Master"; $subject="메일 제목입니다."; $body="메일 내용입니다."; $cc_mail="cc@example.com"; $bcc_mail="bcc@example.com"; /* 메일 보내기 */ $sendmail->send_mail($to, $from, $subject, $body,$cc_mail,$bcc_mail) ?>

 

 attach() - 첨부파일추가 하여 메일보내기


  메일에 첨부파일이 있을 시 이 함수를 사용하면 된다. 첨부파일 같은경우 대용량일 경우 전송이 제대로 이루어 지지 않을 수 있다. 한가지 명심할점은 메일을 보낼시 첨부파일 메소드를 먼저 사용한뒤 메일을 보내야 한다는 점이다.


<?php /* 클래스 파일 로드 */ include "Sendmail.php"; /* 클래스 객체 변수 선언 */ $sendmail = new Sendmail(); /* + $path : 파일의 절대 경로 + $name : 파일의 이름을 설정 + $ctype : 메일 컨텐츠 타입 (옵션값으로 기본값은 application/octet-stream 이다 ) */ $path="test.txt"; $name="example.txt"; $ctype="application/octet-stream"; /* 첨부파일 추가 */ $sendmail->attach($path,$name,$ctype); $to="hgd@example.com"; $from="Master"; $subject="첨부파일이 있습니다."; $body="첨부파일이 추가되었습니다."; $cc_email="cc@example.com"; $bcc_mail="bcc@example.com"; /* 메일 보내기 */ $sendmail->send_mail($to, $from, $subject, $body,$cc_mail,$bcc_mail) ?>


 Sendmail 함수의 대한 설명은 여기까지며, PHP 의 클래스까지 다룰줄 안다면 크게 어려운점이 없을것이다. smtp 메일 서버 같은 경우 많은 테스트를 거치지 못했기 때문에, 메일 전송이 되지 않는 smtp 메일 서버 도 있을것이다. 그런 경우 해결방안이 없거나 수정이 어려울 시, 다른 smtp 메일 서버를 이용하는게 정신건강에 좋을것이다. 마지막으로 에러나 궁금한점은 댓글을 이용해주길



출처: http://b.redinfo.co.kr/87 [꿈꾸는 개발자]


================================================================

이거 만들어 주신 위에 분에게 감사를~~ㅎㅎㅎㅎ

추가로, 여러명에게 보낼때 하는법이다.


 => ex1) $to="hong1@example.com, hong2@example.com";  

    ex2)  $to=array('hong1@example.com','hong2@example.com';



위에꺼에 내가 하는법을 추가하자면,

Sendmai.php 파일을 열어서, 내 메일 서버를 적어야한다.




class Sendmail {

    /* smtp 의 호스트 설정 : 아래는 gmail 일경우 */

    var $host="ssl://smtp.gmail.com";

/* smtp 계정 아이디 입력 */

    var $smtp_id="example@gmail.com";

    /* smtp 계정 비밀번호 입력 */

var $smtp_pw="password";


위에 주소랑 적고,


$host에는 내 메일 서버는 ssl이 아니라,그냥 smtp.example.com 이렇게만 적었다.


그리고 포트가 틀릴때가 있는데, 그때는


if(!$this->fp = fsockopen($host, 465, $errno, $errstr, 10)) {


여기를 찾아서, 포트번호를 바꿔주면 된다.


2번째 465를 내가 사용하는 포트번호로 바꿔주면 된다.


처음에 이거를 못찾아서, 좀 헤맸다.



그리고, 내용을 쓸때, html은 좀 복잡해서,


그냥 $body에 다쓰니까 써지더라....ㅠㅠㅠㅠㅠ



'컴퓨터 > PHP' 카테고리의 다른 글

php json decode 시 에러 또는 Null뜰때.  (0) 2019.07.22
php 파일이동  (0) 2018.08.28
php 웹서버 절대경로 찾기  (0) 2018.08.28
crontab php 실행시 파일 경로  (0) 2018.08.28
php.ini 유용한 기본 설정법  (0) 2018.06.29
Posted by Tyson
2018. 8. 28. 18:12





웹서버에서 어떤 디렉터리나 파일의 절대 경로(absolute path)를 알아야 하는 상황이 있을 수 있습니다.

이런 경우 다음과 같은 PHP 코드를 사용할 수 있습니다.

<?php echo getcwd(); ?>


->save(getcwd ().'/'.$file_name);

이런식으로 파일 저장했다.

근데, 이거는 현재 내 위치이고, 파일의 위치를 찾으려면, 


http://tyson.tistory.com/151


여기처럼 절대경로 찾는걸 넣어주는게 낫다.




참고 블로그 

https://iwordpower.com/2017/01/absolute-path-of-a-directory-or-file/


'컴퓨터 > PHP' 카테고리의 다른 글

php 파일이동  (0) 2018.08.28
php 메일 보내기  (0) 2018.08.28
crontab php 실행시 파일 경로  (0) 2018.08.28
php.ini 유용한 기본 설정법  (0) 2018.06.29
홈페이지 .php .html 등 확장자 생략하기,  (0) 2018.06.29
Posted by Tyson
2018. 8. 28. 17:55

crontab 이 안먹어서, 보니까, include 파일 경로를 상대경로로 해주니, 못 찾아온다.


그래서, 찾아보니, 절대경로로 해줘야 하는데, 


실행 파일의 하위 폴더를 가져오고 싶어서, 하는법을 찾아보니, 3가지 방법이있더라.



밑에처럼 해주면 된다.


 include ($_SERVER['DOCUMENT_ROOT'] . '/libs/get.php');


 include (dirname($_SERVER['SCRIPT_FILENAME']) . '/libs/get.php');



 set_include_path("/home/habonyphp/public_html/");

 include ('libs/get.php');




난 dirname($_SERVER['SCRIPT_FILENAME']) . 

이게 되더라. 다른것들은 잘 못찾아와서, 그냥 두번째거로 했다.




참고블로그

: http://blog.habonyphp.com/entry/php-crontab-php-%EC%8B%A4%ED%96%89%EC%8B%9C-%EC%9D%B8%EC%BF%A0%EB%A5%B4%EB%93%9C-%ED%8C%8C%EC%9D%BC-%EA%B2%BD%EB%A1%9C%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0#.W4T8Fej7Tcs

Posted by Tyson