[PHP] exec 실행에 대한 응답코드

$error 파라미터에는 명령어가 제대로 실행되지 않았을때의 에러코드 값을 반환한다.

exec("ls -l /varrrrrr", $output, $error);
echo $error;
2


그런데 여기서 반환되는 에러코드가 대체 무슨 에러인지 알아야 대처를 해주거나 에러 결과도 표시해 줄것 아닌가?
보통 리눅스에서 명령어 에러코드는 아래와 같다. 


/usr/include/asm-generic/errno-base.h  

#ifndef _ASM_GENERIC_ERRNO_BASE_H

#define _ASM_GENERIC_ERRNO_BASE_H


#define EPERM        1  /* Operation not permitted */

#define ENOENT       2  /* No such file or directory */

#define ESRCH        3  /* No such process */

#define EINTR        4  /* Interrupted system call */

#define EIO      5  /* I/O error */

#define ENXIO        6  /* No such device or address */

#define E2BIG        7  /* Argument list too long */

#define ENOEXEC      8  /* Exec format error */

#define EBADF        9  /* Bad file number */

#define ECHILD      10  /* No child processes */

#define EAGAIN      11  /* Try again */

#define ENOMEM      12  /* Out of memory */

#define EACCES      13  /* Permission denied */

#define EFAULT      14  /* Bad address */

#define ENOTBLK     15  /* Block device required */

#define EBUSY       16  /* Device or resource busy */

#define EEXIST      17  /* File exists */

#define EXDEV       18  /* Cross-device link */

#define ENODEV      19  /* No such device */

#define ENOTDIR     20  /* Not a directory */

#define EISDIR      21  /* Is a directory */

#define EINVAL      22  /* Invalid argument */

#define ENFILE      23  /* File table overflow */

#define EMFILE      24  /* Too many open files */

#define ENOTTY      25  /* Not a typewriter */

#define ETXTBSY     26  /* Text file busy */

#define EFBIG       27  /* File too large */

#define ENOSPC      28  /* No space left on device */

#define ESPIPE      29  /* Illegal seek */

#define EROFS       30  /* Read-only file system */

#define EMLINK      31  /* Too many links */

#define EPIPE       32  /* Broken pipe */

#define EDOM        33  /* Math argument out of domain of func */

#define ERANGE      34  /* Math result not representable */


#endif 


/usr/include/asm-generic/errno.h

#ifndef _ASM_GENERIC_ERRNO_H

#define _ASM_GENERIC_ERRNO_H


#include <asm-generic/errno-base.h>


#define EDEADLK     35  /* Resource deadlock would occur */

#define ENAMETOOLONG    36  /* File name too long */

#define ENOLCK      37  /* No record locks available */

#define ENOSYS      38  /* Function not implemented */

#define ENOTEMPTY   39  /* Directory not empty */

#define ELOOP       40  /* Too many symbolic links encountered */

#define EWOULDBLOCK EAGAIN  /* Operation would block */

#define ENOMSG      42  /* No message of desired type */

#define EIDRM       43  /* Identifier removed */

#define ECHRNG      44  /* Channel number out of range */

#define EL2NSYNC    45  /* Level 2 not synchronized */

#define EL3HLT      46  /* Level 3 halted */

#define EL3RST      47  /* Level 3 reset */

#define ELNRNG      48  /* Link number out of range */

#define EUNATCH     49  /* Protocol driver not attached */

#define ENOCSI      50  /* No CSI structure available */

#define EL2HLT      51  /* Level 2 halted */

#define EBADE       52  /* Invalid exchange */

#define EBADR       53  /* Invalid request descriptor */

#define EXFULL      54  /* Exchange full */

#define ENOANO      55  /* No anode */

#define EBADRQC     56  /* Invalid request code */

#define EBADSLT     57  /* Invalid slot */


#define EDEADLOCK   EDEADLK


#define EBFONT      59  /* Bad font file format */

#define ENOSTR      60  /* Device not a stream */

#define ENODATA     61  /* No data available */

#define ETIME       62  /* Timer expired */

#define ENOSR       63  /* Out of streams resources */

#define ENONET      64  /* Machine is not on the network */

#define ENOPKG      65  /* Package not installed */

#define EREMOTE     66  /* Object is remote */

#define ENOLINK     67  /* Link has been severed */

#define EADV        68  /* Advertise error */

#define ESRMNT      69  /* Srmount error */

#define ECOMM       70  /* Communication error on send */

#define EPROTO      71  /* Protocol error */

#define EMULTIHOP   72  /* Multihop attempted */

#define EDOTDOT     73  /* RFS specific error */

#define EBADMSG     74  /* Not a data message */

#define EOVERFLOW   75  /* Value too large for defined data type */

#define ENOTUNIQ    76  /* Name not unique on network */

#define EBADFD      77  /* File descriptor in bad state */

#define EREMCHG     78  /* Remote address changed */

#define ELIBACC     79  /* Can not access a needed shared library */

#define ELIBBAD     80  /* Accessing a corrupted shared library */

#define ELIBSCN     81  /* .lib section in a.out corrupted */

#define ELIBMAX     82  /* Attempting to link in too many shared libraries */

#define ELIBEXEC    83  /* Cannot exec a shared library directly */

#define EILSEQ      84  /* Illegal byte sequence */

#define ERESTART    85  /* Interrupted system call should be restarted */

#define ESTRPIPE    86  /* Streams pipe error */

#define EUSERS      87  /* Too many users */

#define ENOTSOCK    88  /* Socket operation on non-socket */

#define EDESTADDRREQ    89  /* Destination address required */

#define EMSGSIZE    90  /* Message too long */

#define EPROTOTYPE  91  /* Protocol wrong type for socket */

#define ENOPROTOOPT 92  /* Protocol not available */

#define EPROTONOSUPPORT 93  /* Protocol not supported */

#define ESOCKTNOSUPPORT 94  /* Socket type not supported */

#define EOPNOTSUPP  95  /* Operation not supported on transport endpoint */

#define EPFNOSUPPORT    96  /* Protocol family not supported */

#define EAFNOSUPPORT    97  /* Address family not supported by protocol */

#define EADDRINUSE  98  /* Address already in use */

#define EADDRNOTAVAIL   99  /* Cannot assign requested address */

#define ENETDOWN    100 /* Network is down */

#define ENETUNREACH 101 /* Network is unreachable */

#define ENETRESET   102 /* Network dropped connection because of reset */

#define ECONNABORTED    103 /* Software caused connection abort */

#define ECONNRESET  104 /* Connection reset by peer */

#define ENOBUFS     105 /* No buffer space available */

#define EISCONN     106 /* Transport endpoint is already connected */

#define ENOTCONN    107 /* Transport endpoint is not connected */

#define ESHUTDOWN   108 /* Cannot send after transport endpoint shutdown */

#define ETOOMANYREFS    109 /* Too many references: cannot splice */

#define ETIMEDOUT   110 /* Connection timed out */

#define ECONNREFUSED    111 /* Connection refused */

#define EHOSTDOWN   112 /* Host is down */

#define EHOSTUNREACH    113 /* No route to host */

#define EALREADY    114 /* Operation already in progress */

#define EINPROGRESS 115 /* Operation now in progress */

#define ESTALE      116 /* Stale NFS file handle */

#define EUCLEAN     117 /* Structure needs cleaning */

#define ENOTNAM     118 /* Not a XENIX named type file */

#define ENAVAIL     119 /* No XENIX semaphores available */

#define EISNAM      120 /* Is a named type file */

#define EREMOTEIO   121 /* Remote I/O error */

#define EDQUOT      122 /* Quota exceeded */


#define ENOMEDIUM   123 /* No medium found */

#define EMEDIUMTYPE 124 /* Wrong medium type */

#define ECANCELED   125 /* Operation Canceled */

#define ENOKEY      126 /* Required key not available */

#define EKEYEXPIRED 127 /* Key has expired */

#define EKEYREVOKED 128 /* Key has been revoked */

#define EKEYREJECTED    129 /* Key was rejected by service */


/* for robust mutexes */

#define EOWNERDEAD  130 /* Owner died */

#define ENOTRECOVERABLE 131 /* State not recoverable */


#endif 

예제에서 에러코드는 2번이었고, 2번의 에러코드는 없는 디렉토리 에러인걸 볼 수 있다.

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
42 [MySQL] user Table 권한설명 최고관리자 10-13 2,055
41 [NginX] Codeigniter를 위한 server config 최고관리자 09-09 2,764
40 [Nginx] 역할 최고관리자 09-09 2,717
39 [MySQL] Replace를 이용하여 데이타 내용 치환하기 최고관리자 09-08 1,723
38 [리눅스] Mysql Database 이름을 www.telepasi.com처럼 하면 안됨 최고관리자 09-08 1,679
37 [리눅스] CentOS vsftpd 설치 최고관리자 09-08 1,746
36 [리눅스] 사용자 목록 확인 (Linux User List) 최고관리자 09-08 13,875
35 [NginX] 리버스 프록시(Reverse Proxy)란 최고관리자 09-08 5,119
34 [리눅스] go lang - REST API를 위한 Gin 설치 최고관리자 09-07 1,766
33 [리눅스] go 환경설정 최고관리자 09-07 1,756
32 [리눅스] CentOS7 에서 go Lang 설치하기 최고관리자 09-07 1,721
31 [리눅스] Mysql 원격접속 허용하기 최고관리자 09-07 1,803
30 [서버설치] How to Install PHP 7, NGINX, MySQL on CentOS/RHEL 7.6 최고관리자 09-06 1,786
29 [서버 설치] mysql_secure_installation 최고관리자 09-06 1,724
28 [서버 설치] CentOS7 방화벽 설치 최고관리자 09-06 1,652
27 [DNS] abc.com www.abc.com 레코드 설정 최고관리자 09-05 1,685
26 [리눅스] httpd conf 위치 확인 및 conf 문법검사 명령 최고관리자 09-05 2,404
25 [리눅스] Apache 권한에 대한 참고 사항 최고관리자 09-04 4,400
24 [리눅스] CentOS Apache 주요 디렉토리 최고관리자 09-04 1,853
23 [리눅스] CentOS 6 vs CentOS 7 명령어 대응 최고관리자 09-04 1,923