php上传限制设置
php-fpm简洁介绍

php-fpm简洁介绍PHP-FPM是一款运行在Nginx或Apache服务器上的PHP FastCGI管理器,它可以大大提升PHP的性能和稳定性,特别是对于高并发访问的网站来说。
本文将对PHP-FPM进行简要介绍。
一、PHP-FPM的作用PHP-FPM是PHP的FastCGI实现之一,它可以将PHP进程独立出来,从而不再依赖Apache或Nginx进程直接处理PHP脚本,从而提高了PHP的性能和稳定性。
此外,PHP-FPM 可以管理和监控PHP进程,通过配置可以启用多个PHP进程来处理请求,防止单个进程崩溃而导致整个网站瘫痪。
PHP-FPM还支持连接池来连接MySQL数据库,从而进一步提高性能。
PHP-FPM可以在PHP编译的时候一起编译安装,也可以单独安装。
在安装PHP-FPM之前,需要先安装Nginx或Apache等Web服务器。
1. 在CentOS系统中安装PHP-FPM```yum install php-fpm```安装完成之后,启动PHP-FPM:2. 配置PHP-FPMPHP-FPM的配置文件在/etc/php-fpm.conf或/etc/php-fpm.d/www.conf中。
其中,www.conf文件是使用最广泛的配置文件,它默认的配置项都注释掉了,需要根据实际需求进行配置。
以下是一些常用的配置选项:```; 设置监听的IP和端口,默认为127.0.0.1:9000listen = 127.0.0.1:9000; 设置进程数量和线程数量pm.max_children = 5pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 3; 设置最大请求处理时间request_terminate_timeout = 60s; 设置上传文件大小限制upload_max_filesize = 2Mpost_max_size = 8M; 设置错误日志和访问日志的位置error_log = /var/log/php-fpm/error.logaccess.log = /var/log/php-fpm/access.log```1. 优化PHP性能:PHP-FPM将PHP进程独立出来,避免了Apache或Nginx直接解释PHP脚本的瓶颈,提高了PHP的性能。
[参数设置]如何修改上传单个附件大小限制
![[参数设置]如何修改上传单个附件大小限制](https://img.taocdn.com/s3/m/e3914f6c1ed9ad51f01df2b7.png)
关于上传单个附件大小限制的设置
在通达OA 2013及之前版本中,默认允许单个附件的大小为200MB,如果需要调整大小,可以通过修改MYOA\bin\php.ini中的几个参数实现。
upload_max_filesize 上传单个文件的大小,默认200M,该值最大可设置2047M。
post_max_size 一个表单允许提交的数据(包括上传的所有文件)的大小,默认1000MB,该值最大可设置2047M。
比如在upload_max_filesize设置为200M的情况下,一次最多可以上传5个200M的附件。
该值必须大于或等于upload_max_filesize。
max_execution_time 该参数控制每个页面程序最大执行时间,单位秒,默认为1200秒。
如果该参数设置过小,在上传较大文件或上传速度较慢时,上传时间超过该值还没有上传完成,则会自动中断。
如果该参数设置过大,在遇到一些程序需要长时间占用CPU等系统资源时,会影响系统整体使用。
所以需要结合自己的应用、服务器网络带宽等实际情况设置合理的值。
注:php.ini中的参数调整后,需要重启Office_Anywhere服务后生效。
1。
突破php网站上传文件大小限制

突破php网站上传文件大小限制phpmyadmin导入SQL文件时涉及到phpmyadmin上传文件大小限制问题,默认phpmyadmin上传文件大小为2M,如果想要phpmyadmin上传超过2M大文件,就需要修改phpmyadmin上传文件的大小配置或者将大文件分几批上传,相对来说修改phpmyadmin 上传文件大小的限制来得方便很多。
解决phpmyadmin上传文件大小限制问题涉及修改php.ini配置文件和phpmyadmin配置文件。
修改phpmyadmin上传文件大小限制主要分修改php.ini配置文件和phpmyadmin配置文件两个步骤。
第一步:修改php.ini配置文件中文件上传大小配置此步骤与一般的PHP.INI配置文件上传功能方法一致,需要修改php.ini配置文件中upload_max_filesize和post_max_size两个选项值,具体修改方法请参考:PHP.INI配置:文件上传功能配置教程。
第二步:修改php执行时间及内存限制实现phpmyadmin上传大文件功能如果想要phpmyadmin上传大文件,还需修改php.ini配置文件中的max_execution_time(php页面执行最大时间)、max_input_time(php页面接受数据最大时间)、memory_limit(php页面占用的最大内存)三个配置选项,这是因为phpmyadmin 上传大文件时,php页面的执行时间、内存占用也势必变得更长更大,其需要php运行环境的配合,光修改上传文件大小限制是不够的。
第三步:修改phpmyadmin配置文件在完成php.ini的相关配置后,还需要修改phpmyadmin配置。
1、修改phpmyadmin\config.inc.php配置文件中的$cfg['ExecTimeLimit']配置选项,默认值是300,需要修改为0,即没有时间限制。
DedeCMS_你指定要上传的文件或文件大小超过限制解决办法

DedeCMS_织梦_你指定要上传的文件或文件大小超过限制解的解决办法
如图所示,出现此情况的原因主要如下:
1.双传临时文件没有写入权限
打开PHP的配置文件php.ini,找到upload_tmp_dir 该项,并将值修改为你定义的位置,推荐修改为apache 同目录下,并给予读写权限(Dede_AMPZ中的配置值为upload_tmp_dir = "E:/Server/DedeAMPZ/tmp/uploads",参考使用)
2.PHP配置文件中文件上传大小限制过小
在php.ini 中分别找到如下两个参数
post_max_size
upload_max_filesize
并将对应的值修改为较合适的值,推荐为10M
3.如果你需要上传的文件较大,则需要调整php.ini中如下参数
max_execution_time 300 #每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time 300 #每个PHP页面接收数据所需的最大时间,默认60秒memory_limit 128m #每个PHP页面所吃掉的最大内存,默认8M。
PHP教程-文件上传

<html> <head><title>浏览上传目录</title></head> <body> <h1>浏览</h1> <?php $current_dir = './uploads/'; $dir = opendir($current_dir); echo "<p>上传目录是: $current_dir</p>"; echo '<p>上传列表:</p><ul>'; while ($file = readdir($dir)) { echo "<li>$file</li>"; } echo '</ul>'; closedir($dir); ?> </body></html>
当需要上传多个文件的情况,有两种实现的 解决方法:
使用不同的表单元素
<input type=file name=file_a>
<input type=file name=file_b>
使用数组格式的表单元素
<input type=file name=file[1]>
<input type=file name=file[2]>
创建和修改目录
mkdir -- 新建目录
bool mkdir ( string pathname [, int mode] ) 如:mkdir("/path/to/my/dir", 0700);
post_max_size

post_max_sizePost_max_size是PHP脚本可以接收的最大POST数据大小,这是用来防止恶意攻击者对服务器发出大量数据进行破坏的重要限制。
为什么要设置post_max_size?post_max_size可以限制传输给服务器的数据大小,从而防止恶意攻击。
如果没有此限制,那么攻击者就可以把大量的数据传到服务器,从而对服务器造成损害。
如何设置post_max_size?post_max_size可以在php.ini文件中通过修改post_max_size 变量来配置。
可以通过配置变量来控制服务器可以接收的最大POST 数据大小,比如:post_max_size = 8M;在上面的配置中,服务器可以接收最多8M的POST数据。
另外,post_max_size的配置还可以通过.htaccess文件来实现。
要使用.htaccess文件来实现post_max_size的配置,首先要将以下语句添加到.htaccess文件中:php_value post_max_size 8M在上面的配置中,服务器可以接收最多8M的POST数据。
在Apache服务器上,也可以通过添加以下语句来实现post_max_size的配置:LimitRequestBody 8388608在上面的配置中,服务器可以接收最多8M的POST数据。
注意:在设置post_max_size时,应考虑服务器的性能。
在设置post_max_size时,应考虑服务器性能,如果post_max_size设置过大,会影响服务器性能。
什么时候会出现post_max_size超过限制的情况?若post_max_size被设置为较小的值,当用户试图上传的文件(或POST数据)的大小超过post_max_size的限制时,就会出现post_max_size超过限制的情况。
例如,如果你将post_max_size设置为1M,而用户试图上传的文件大小为2M,那么就会出现post_max_size超过限制的情况。
上传文件,提示文件不存在的解决方法

上传⽂件,提⽰⽂件不存在的解决⽅法在做公司的⼀个项⽬中,需要上传⽂件,使⽤的是AjaxUpload JS组件,选择完⽂件后,发送请求到指定接⼝,随即返回服务器上⽂件的相对路径,然后PHP再做其他⼯作(这不是重点)处理上传的PHP程序,限制其⽂件⼤⼩为20Mphp.ini中post_max_size 20Mupload_max_filesize 20Mmemory_limit 256Mngint.conf中client_max_body_size 518M上传20M以下的⽂件,没有问题,但是,例如上传80M的⽂件,会报错,⽂件不存在,if ( ! isset($_FILES[$field])){ $this->set_error('upload_no_file_selected'); return FALSE;}⽹上的解决⽅法是设置 php.ini和nginx.conf中相应的属性,仍然报错,后来参考了,才找到原因解决⽅法:php.ini中的post_max_size和upload_max_filesize 的值要⼤些,不能仅限于规定的值,⽐如这个20M,根据情况,这⾥设置200M,再次上传80M的⽂件,根据PHP程序本⾝的 $_FILES['file']['error'] 可得出⽂件⼤⼩超过限制这样的提⽰1. SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler)2. {3. char *boundary, *s=NULL, *boundary_end = NULL, *start_arr=NULL, *array_index=NULL;4. char *temp_filename=NULL, *lbuf=NULL, *abuf=NULL;5. int boundary_len=0, total_bytes=0, cancel_upload=0, is_arr_upload=0, array_len=0;6. int max_file_size=0, skip_upload=0, anonindex=0, is_anonymous;7. zval *http_post_files=NULL; HashTable *uploaded_files=NULL;8. #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)9. int str_len = 0, num_vars = 0, num_vars_max = 2*10, *len_list = NULL;10. char **val_list = NULL;11. #endif12. zend_bool magic_quotes_gpc;13. multipart_buffer *mbuff;14. zval *array_ptr = (zval *) arg;15. int fd=-1;16. zend_llist header;17. void *event_extra_data = NULL;18. int llen = 0;19.20. /**21. *检查是否超出最⼤上传⽂件⼤⼩,这是重点22. *从request_global中取出request_info结构体中的content_length元素,这个content_length应该是http 头信息中发给服务器的23. *如果content_length ⼤于php.ini中设置的post_max_size,就会由sapi_errror触发⼀个warning,这个warning不会被php接受(还有待研究)24. *通过nginx的log⽇志中也能发现此warning25. *26. */ 27. if (SG(request_info).content_length > SG(post_max_size)) {28. sapi_module.sapi_error(E_WARNING, "POST Content-Length of %ld bytes exceeds the limit of %ld bytes", SG(request_info).content_length, SG(post_max_size));29. return;30. }31.32. //取得上传⽂件的分隔符33. boundary = strstr(content_type_dup, "boundary");34. if (!boundary || !(boundary=strchr(boundary, '='))) {35. sapi_module.sapi_error(E_WARNING, "Missing boundary in multipart/form-data POST data");36. return;37. }38.39. boundary++;40. boundary_len = strlen(boundary);41.42. if (boundary[0] == '"') {43. boundary++;44. boundary_end = strchr(boundary, '"');45. if (!boundary_end) {46. sapi_module.sapi_error(E_WARNING, "Invalid boundary in multipart/form-data POST data");47. return;48. }49. } else {50. /* search for the end of the boundary */51. boundary_end = strchr(boundary, ',');52. }53. if (boundary_end) {54. boundary_end[0] = '';55. boundary_len = boundary_end-boundary;56. }57.58. /* Initialize the buffer */59. if (!(mbuff = multipart_buffer_new(boundary, boundary_len))) {60. sapi_module.sapi_error(E_WARNING, "Unable to initialize the input buffer");61. return;62. }63.64. //初始化$_FILE变量67. ALLOC_HASHTABLE(uploaded_files);68. zend_hash_init(uploaded_files, 5, NULL, (dtor_func_t) free_estring, 0);69. SG(rfc1867_uploaded_files) = uploaded_files;70.71. ALLOC_ZVAL(http_post_files);72. array_init(http_post_files);73. INIT_PZVAL(http_post_files);74. PG(http_globals)[TRACK_VARS_FILES] = http_post_files; //TRACK_VARS_FILE正是_FILE在php_core_globals.http_globals中的index (注1)75.76. #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)77. if (php_mb_encoding_translation(TSRMLS_C)) {78. val_list = (char **)ecalloc(num_vars_max+2, sizeof(char *));79. len_list = (int *)ecalloc(num_vars_max+2, sizeof(int));80. }81. #endif82. zend_llist_init(&header, sizeof(mime_header_entry), (llist_dtor_func_t) php_free_hdr_entry, 0);83.84. if (php_rfc1867_callback != NULL) {85. multipart_event_start event_start;86.87. event_start.content_length = SG(request_info).content_length;88. if (php_rfc1867_callback(MULTIPART_EVENT_START, &event_start, &event_extra_data TSRMLS_CC) == FAILURE) {89. goto fileupload_done;90. }91. }92.93. while (!multipart_buffer_eof(mbuff TSRMLS_CC))94. {95. char buff[FILLUNIT];96. char *cd=NULL,*param=NULL,*filename=NULL, *tmp=NULL;97. size_t blen=0, wlen=0;98. off_t offset;99.100. zend_llist_clean(&header);101.102. if (!multipart_buffer_headers(mbuff, &header TSRMLS_CC)) {103. goto fileupload_done;104. }105.106. if ((cd = php_mime_get_hdr_value(header, "Content-Disposition"))) {107. char *pair=NULL;108. int end=0;109.110. while (isspace(*cd)) {111. ++cd;112. }113.114. while (*cd && (pair = php_ap_getword(&cd, ';')))115. {116. char *key=NULL, *word = pair;117.118. while (isspace(*cd)) {119. ++cd;120. }121.122. if (strchr(pair, '=')) {123. key = php_ap_getword(&pair, '=');124.125. if (!strcasecmp(key, "name")) {126. if (param) {127. efree(param);128. }129. param = php_ap_getword_conf(&pair TSRMLS_CC);130. } else if (!strcasecmp(key, "filename")) {131. if (filename) {132. efree(filename);133. }134. filename = php_ap_getword_conf(&pair TSRMLS_CC);135. }136. }137. if (key) {138. efree(key);139. }140. efree(word);141. }142.143. /* Normal form variable, safe to read all data into memory */144. if (!filename && param) {145. unsigned int value_len;146. char *value = multipart_buffer_read_body(mbuff, &value_len TSRMLS_CC);147. unsigned int new_val_len; /* Dummy variable */148.149. if (!value) {150. value = estrdup("");151. }152.153. if (sapi_module.input_filter(PARSE_POST, param, &value, value_len, &new_val_len TSRMLS_CC)) {154. if (php_rfc1867_callback != NULL) {155. multipart_event_formdata event_formdata;156. size_t newlength = 0;157.158. event_formdata.post_bytes_processed = SG(read_post_bytes);159. event_ = param;160. event_formdata.value = &value;161. event_formdata.length = new_val_len;162. event_formdata.newlength = &newlength;163. if (php_rfc1867_callback(MULTIPART_EVENT_FORMDATA, &event_formdata, &event_extra_data TSRMLS_CC) == FAILURE) {166. continue;167. }168. new_val_len = newlength;169. }170.171. #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)172. if (php_mb_encoding_translation(TSRMLS_C)) {173. php_mb_gpc_stack_variable(param, value, &val_list, &len_list,174. &num_vars, &num_vars_max TSRMLS_CC);175. } else {176. safe_php_register_variable(param, value, new_val_len, array_ptr, 0 TSRMLS_CC);177. }178. #else179. safe_php_register_variable(param, value, new_val_len, array_ptr, 0 TSRMLS_CC);180. #endif181. } else if (php_rfc1867_callback != NULL) {182. multipart_event_formdata event_formdata;183.184. event_formdata.post_bytes_processed = SG(read_post_bytes);185. event_ = param;186. event_formdata.value = &value;187. event_formdata.length = value_len;188. event_formdata.newlength = NULL;189. php_rfc1867_callback(MULTIPART_EVENT_FORMDATA, &event_formdata, &event_extra_data TSRMLS_CC);190. }191.192. if (!strcasecmp(param, "MAX_FILE_SIZE")) {193. max_file_size = atol(value);194. }195.196. efree(param);197. efree(value);198. continue;199. }200.201. /* If file_uploads=off, skip the file part */202. if (!PG(file_uploads)) {203. skip_upload = 1;204. }205.206. /* Return with an error if the posted data is garbled */207. if (!param && !filename) {208. sapi_module.sapi_error(E_WARNING, "File Upload Mime headers garbled");209. goto fileupload_done;210. }211.212. if (!param) {213. is_anonymous = 1;214. param = emalloc(MAX_SIZE_ANONNAME);215. snprintf(param, MAX_SIZE_ANONNAME, "%u", anonindex++);216. } else {217. is_anonymous = 0;218. }219.220. /* New Rule: never repair potential malicious user input */221. if (!skip_upload) {222. char *tmp = param;223. long c = 0;224.225. while (*tmp) {226. if (*tmp == '[') {227. c++;228. } else if (*tmp == ']') {229. c--;230. if (tmp[1] && tmp[1] != '[') {231. skip_upload = 1;232. break;233. }234. }235. if (c < 0) {236. skip_upload = 1;237. break;238. }239. tmp++;240. }241. }242.243. total_bytes = cancel_upload = 0;244.245. if (!skip_upload) {246. /* Handle file */247. fd = php_open_temporary_fd_ex(PG(upload_tmp_dir), "php", &temp_filename, 1 TSRMLS_CC);248. if (fd==-1) {249. sapi_module.sapi_error(E_WARNING, "File upload error - unable to create a temporary file");250. cancel_upload = UPLOAD_ERROR_E;251. }252. }253.254. if (!skip_upload && php_rfc1867_callback != NULL) {255. multipart_event_file_start event_file_start;256.257. event_file_start.post_bytes_processed = SG(read_post_bytes);258. event_file_ = param;259. event_file_start.filename = &filename;260. if (php_rfc1867_callback(MULTIPART_EVENT_FILE_START, &event_file_start, &event_extra_data TSRMLS_CC) == FAILURE) { 261. if (temp_filename) {262. if (cancel_upload != UPLOAD_ERROR_E) { /* file creation failed */265. }266. efree(temp_filename);267. }268. temp_filename="";269. efree(param);270. efree(filename);271. continue;272. }273. }274.275. if (skip_upload) {276. efree(param);277. efree(filename);278. continue;279. }280.281. if(strlen(filename) == 0) {282. #if DEBUG_FILE_UPLOAD283. sapi_module.sapi_error(E_NOTICE, "No file uploaded");284. #endif285. cancel_upload = UPLOAD_ERROR_D;286. }287.288. offset = 0;289. end = 0;290. while (!cancel_upload && (blen = multipart_buffer_read(mbuff, buff, sizeof(buff), &end TSRMLS_CC)))291. {292. if (php_rfc1867_callback != NULL) {293. multipart_event_file_data event_file_data;294.295. event_file_data.post_bytes_processed = SG(read_post_bytes);296. event_file_data.offset = offset;297. event_file_data.data = buff;298. event_file_data.length = blen;299. event_file_data.newlength = &blen;300. if (php_rfc1867_callback(MULTIPART_EVENT_FILE_DATA, &event_file_data, &event_extra_data TSRMLS_CC) == FAILURE) {301. cancel_upload = UPLOAD_ERROR_X;302. continue;303. }304. }305.306. if (PG(upload_max_filesize) > 0 && total_bytes > PG(upload_max_filesize)) {307. #if DEBUG_FILE_UPLOAD308. sapi_module.sapi_error(E_NOTICE, "upload_max_filesize of %ld bytes exceeded - file [%s=%s] not saved", PG(upload_max_filesize), param, filename); 309. #endif310. cancel_upload = UPLOAD_ERROR_A;311. } else if (max_file_size && (total_bytes > max_file_size)) {312. #if DEBUG_FILE_UPLOAD313. sapi_module.sapi_error(E_NOTICE, "MAX_FILE_SIZE of %ld bytes exceeded - file [%s=%s] not saved", max_file_size, param, filename);314. #endif315. cancel_upload = UPLOAD_ERROR_B;316. } else if (blen > 0) {317.318. wlen = write(fd, buff, blen);319.320. if (wlen == -1) {321. /* write failed */322. #if DEBUG_FILE_UPLOAD323. sapi_module.sapi_error(E_NOTICE, "write() failed - %s", strerror(errno));324. #endif325. cancel_upload = UPLOAD_ERROR_F;326. } else if (wlen < blen) {327. #if DEBUG_FILE_UPLOAD328. sapi_module.sapi_error(E_NOTICE, "Only %d bytes were written, expected to write %d", wlen, blen);329. #endif330. cancel_upload = UPLOAD_ERROR_F;331. } else {332. total_bytes += wlen;333. }334.335. offset += wlen;336. }337. }338. if (fd!=-1) { /* may not be initialized if file could not be created */339. close(fd);340. }341. if (!cancel_upload && !end) {342. #if DEBUG_FILE_UPLOAD343. sapi_module.sapi_error(E_NOTICE, "Missing mime boundary at the end of the data for file %s", strlen(filename) > 0 ? filename : "");344. #endif345. cancel_upload = UPLOAD_ERROR_C;346. }347. #if DEBUG_FILE_UPLOAD348. if(strlen(filename) > 0 && total_bytes == 0 && !cancel_upload) {349. sapi_module.sapi_error(E_WARNING, "Uploaded file size 0 - file [%s=%s] not saved", param, filename);350. cancel_upload = 5;351. }352. #endif353.354. if (php_rfc1867_callback != NULL) {355. multipart_event_file_end event_file_end;356.357. event_file_end.post_bytes_processed = SG(read_post_bytes);358. event_file_end.temp_filename = temp_filename;359. event_file_end.cancel_upload = cancel_upload;360. if (php_rfc1867_callback(MULTIPART_EVENT_FILE_END, &event_file_end, &event_extra_data TSRMLS_CC) == FAILURE) {361. cancel_upload = UPLOAD_ERROR_X;364.365. if (cancel_upload) {366. if (temp_filename) {367. if (cancel_upload != UPLOAD_ERROR_E) { /* file creation failed */368. unlink(temp_filename);369. }370. efree(temp_filename);371. }372. temp_filename="";373. } else {374. zend_hash_add(SG(rfc1867_uploaded_files), temp_filename, strlen(temp_filename) + 1, &temp_filename, sizeof(char *), NULL); 375. }376.377. /* is_arr_upload is true when name of file upload field378. * ends in [.*]379. * start_arr is set to point to 1st [380. */381. is_arr_upload = (start_arr = strchr(param,'[')) && (param[strlen(param)-1] == ']');382.383. if (is_arr_upload) {384. array_len = strlen(start_arr);385. if (array_index) {386. efree(array_index);387. }388. array_index = estrndup(start_arr+1, array_len-2);389. }390.391. /* Add $foo_name */392. if (llen < strlen(param) + MAX_SIZE_OF_INDEX + 1) {393. llen = strlen(param);394. lbuf = (char *) safe_erealloc(lbuf, llen, 1, MAX_SIZE_OF_INDEX + 1);395. llen += MAX_SIZE_OF_INDEX + 1;396. }397.398. if (is_arr_upload) {399. if (abuf) efree(abuf);400. abuf = estrndup(param, strlen(param)-array_len);401. snprintf(lbuf, llen, "%s_name[%s]", abuf, array_index);402. } else {403. snprintf(lbuf, llen, "%s_name", param);404. }405.406. #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)407. if (php_mb_encoding_translation(TSRMLS_C)) {408. if (num_vars>=num_vars_max){409. php_mb_gpc_realloc_buffer(&val_list, &len_list, &num_vars_max,410. 1 TSRMLS_CC);411. }412. val_list[num_vars] = filename;413. len_list[num_vars] = strlen(filename);414. num_vars++;415. if(php_mb_gpc_encoding_detector(val_list, len_list, num_vars, NULL TSRMLS_CC) == SUCCESS) {416. str_len = strlen(filename);417. php_mb_gpc_encoding_converter(&filename, &str_len, 1, NULL, NULL TSRMLS_CC);418. }419. s = php_mb_strrchr(filename, '\' TSRMLS_CC);420. if ((tmp = php_mb_strrchr(filename, '/' TSRMLS_CC)) > s) {421. s = tmp;422. }423. num_vars--;424. goto filedone;425. }426. #endif427. /* The check should technically be needed for win32 systems only where428. * it is a valid path separator. However, IE in all it's wisdom always sends429. * the full path of the file on the user's filesystem, which means that unless430. * the user does basename() they get a bogus file name. Until IE's user base drops431. * to nill or problem is fixed this code must remain enabled for all systems.432. */433. s = strrchr(filename, '\');434. if ((tmp = strrchr(filename, '/')) > s) {435. s = tmp;436. }437. #ifdef PHP_WIN32438. if (PG(magic_quotes_gpc)) {439. s = s ? s : filename;440. tmp = strrchr(s, ''');441. s = tmp > s ? tmp : s;442. tmp = strrchr(s, '"');443. s = tmp > s ? tmp : s;444. }445. #endif446.447. #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)448. filedone:449. #endif450.451. if (!is_anonymous) {452. if (s && s > filename) {453. safe_php_register_variable(lbuf, s+1, strlen(s+1), NULL, 0 TSRMLS_CC);454. } else {455. safe_php_register_variable(lbuf, filename, strlen(filename), NULL, 0 TSRMLS_CC);456. }457. }458.459. /* Add $foo[name] */460. if (is_arr_upload) {463. snprintf(lbuf, llen, "%s[name]", param);464. }465. if (s && s > filename) {466. register_http_post_files_variable(lbuf, s+1, http_post_files, 0 TSRMLS_CC);467. } else {468. register_http_post_files_variable(lbuf, filename, http_post_files, 0 TSRMLS_CC);469. }470. efree(filename);471. s = NULL;472.473. /* Possible Content-Type: */474. if (cancel_upload || !(cd = php_mime_get_hdr_value(header, "Content-Type"))) {475. cd = "";476. } else {477. /* fix for Opera 6.01 */478. s = strchr(cd, ';');479. if (s != NULL) {480. *s = '';481. }482. }483.484. /* Add $foo_type */485. if (is_arr_upload) {486. snprintf(lbuf, llen, "%s_type[%s]", abuf, array_index);487. } else {488. snprintf(lbuf, llen, "%s_type", param);489. }490. if (!is_anonymous) {491. safe_php_register_variable(lbuf, cd, strlen(cd), NULL, 0 TSRMLS_CC);492. }493.494. /* Add $foo[type] */495. if (is_arr_upload) {496. snprintf(lbuf, llen, "%s[type][%s]", abuf, array_index);497. } else {498. snprintf(lbuf, llen, "%s[type]", param);499. }500. register_http_post_files_variable(lbuf, cd, http_post_files, 0 TSRMLS_CC);501.502. /* Restore Content-Type Header */503. if (s != NULL) {504. *s = ';';505. }506. s = "";507.508. /* Initialize variables */509. add_protected_variable(param TSRMLS_CC);510.511. magic_quotes_gpc = PG(magic_quotes_gpc);512. PG(magic_quotes_gpc) = 0;513. /* if param is of form xxx[.*] this will cut it to xxx */514. if (!is_anonymous) {515. safe_php_register_variable(param, temp_filename, strlen(temp_filename), NULL, 1 TSRMLS_CC); 516. }517.518. /* Add $foo[tmp_name] */519. if (is_arr_upload) {520. snprintf(lbuf, llen, "%s[tmp_name][%s]", abuf, array_index);521. } else {522. snprintf(lbuf, llen, "%s[tmp_name]", param);523. }524. add_protected_variable(lbuf TSRMLS_CC);525. register_http_post_files_variable(lbuf, temp_filename, http_post_files, 1 TSRMLS_CC);526.527. PG(magic_quotes_gpc) = magic_quotes_gpc;528.529. {530. zval file_size, error_type;531.532. error_type.value.lval = cancel_upload;533. error_type.type = IS_LONG;534.535. /* Add $foo[error] */536. if (cancel_upload) {537. file_size.value.lval = 0;538. file_size.type = IS_LONG;539. } else {540. file_size.value.lval = total_bytes;541. file_size.type = IS_LONG;542. }543.544. if (is_arr_upload) {545. snprintf(lbuf, llen, "%s[error][%s]", abuf, array_index);546. } else {547. snprintf(lbuf, llen, "%s[error]", param);548. }549. register_http_post_files_variable_ex(lbuf, &error_type, http_post_files, 0 TSRMLS_CC);550.551. /* Add $foo_size */552. if (is_arr_upload) {553. snprintf(lbuf, llen, "%s_size[%s]", abuf, array_index);554. } else {555. snprintf(lbuf, llen, "%s_size", param);556. }557. if (!is_anonymous) {558. safe_php_register_variable_ex(lbuf, &file_size, NULL, 0 TSRMLS_CC);559. }562. if (is_arr_upload) {563. snprintf(lbuf, llen, "%s[size][%s]", abuf, array_index);564. } else {565. snprintf(lbuf, llen, "%s[size]", param);566. }567. register_http_post_files_variable_ex(lbuf, &file_size, http_post_files, 0 TSRMLS_CC); 568. }569. efree(param);570. }571. }572. fileupload_done:573. if (php_rfc1867_callback != NULL) {574. multipart_event_end event_end;575.576. event_end.post_bytes_processed = SG(read_post_bytes);577. php_rfc1867_callback(MULTIPART_EVENT_END, &event_end, &event_extra_data TSRMLS_CC); 578. }579.580. SAFE_RETURN;581. }。
413 request entity too large 解决方法 -回复

413 request entity too large 解決方法-回复413 request entity too large错误通常表示客户端发送的请求实体过大,超过了服务器的限制。
这个错误一般出现在使用HTTP协议传输数据的情况下,比如在上传文件或提交表单时。
要解决这个问题,有几个步骤可以尝试:第一步:检查服务器配置首先,检查服务器的配置文件,比如Apache的配置文件httpd.conf或Nginx的配置文件nginx.conf。
在这些配置文件中,需要找到并修改以下设置:1. client_max_body_size:这是限制客户端上传的请求实体大小的指令。
默认情况下,该值通常设置为1MB,也就是1兆字节。
可以尝试将它增加到更大的值,比如10MB或更多。
修改完成后,保存并重新启动服务器。
第二步:重新启动服务器修改配置文件后,需要重新启动Apache或Nginx服务器,使新的配置生效。
可以使用以下命令执行服务器重启操作:1. Apache:在终端中输入“sudo service apache2 restart”(Linux)或“sudo /etc/init.d/apache2 restart”(Mac)。
2. Nginx:在终端中输入“sudo service nginx restart”(Linux)或“sudo /etc/init.d/nginx restart”(Mac)。
第三步:检查上传文件大小限制如果你的错误是在上传文件时出现的,还需要检查上传文件大小的限制。
在PHP应用中,可以通过修改php.ini文件来配置上传文件大小的限制。
1. 找到php.ini文件:在终端中执行“php ini”命令,它将显示php.ini 文件的位置。
2. 修改upload_max_filesize和post_max_size:在php.ini文件中找到这两个指令,它们分别限制了上传文件和POST请求的大小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
php上传限制设置
2007/09/03 21:24
php.ini
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir ="";
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)
; Maximum size of POST data that PHP will accept.
post_max_size = 8M
=============
php上传文件涉及到的参数:
几个参数调整:
0:文件上传时存放文件的临时目录。
必须是 PHP 进程所有者用户可写的目录。
如果未指定则 PHP 使用系统默认值
php.ini文件中upload_tmp_dir用来说明PHP上传的文件放置的临时目录。
要想上传文件,得保证服务器没有关闭临时文件和有对文件夹的写权限
1:max_execution_time
变量max_execution_time设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。
当脚本进入了一个无限循环状态时此变量非常有用。
然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。
在这样的情况下必须考虑将此变量值增加,以避免PHP 在脚本正在执行某些重要过程的时候将脚本关闭。
max_execution_time = 90
2:file_uploads = On
3:upload_max_filesize = 2M
4:post_max_size
同表单提交相关的一个变量是post_max_size,它将控制在采用POST方法进行一次表单提交中PHP所能够接收的最大数据量。
似乎不大可能需要将默认的8 MB改得更大。
相反,应当适当将其降到更为实际的数值。
但如果希望使用PHP 文件上传功能,则需要将此值改为比upload_max_filesize还要大。
post_max_size = 8M
5:max_input_time 网中人;
此变量可以以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。
如果应用程序所运行环境处在低速链路上,则需要增加此值以适应接收数据所需的更多时间。
max_input_time = 90
6:memory_limit
memory_limit = 8M
为了避免正在运行的脚本大量使用系统可用内存,PHP允许定义内存使用限额。
通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量
变量memory_limit的值应当适当大于post_max_size的值
如何实现php大文件上传:
一个简单的配置例子,大家可以参考下:
1:打开php.ini,首先找到
file_uploads = on ;是否允许通过HTTP上传文件的开关。
默认为ON即是开upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize = 8m ;望文生意,即允许上传文件大小的最大值。
默认为2M
post_max_size = 8m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。
默认为8M
一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。
除非你的网
络真有100M/S的上传高速,否则你还得关心关心下面的参数
max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒memory_limit = 8m ;每个PHP页面所吃掉的最大内存,默认8M
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了
==========================
<form action="./upload.php" method="POST"
enctype="multipart/form-data">
<p>Please choose a file to upload:
<input type="file" name="attachment" /><br />
<input type="submit" value="Upload Attachment" /><p>
< form>
print_r($_FILES);
Array
(
[attachment] => Array
(
[name] => author.txt
[type] => text/plain
[tmp_name] => /tmp/phpShfltt
[error] => 0
[size] => 36
)
)。