DOMPDF在服务器中工作正常,但在服务器中显示http错误503

问题描述

我在laravel中遇到错误。我正在使用laravel 5.8。我正在使用dompdf从刀片生成pdf。它在localhost中工作正常,但是在服务器中给出了错误。 503服务不可用

解决方法

Composer 提供了将 Php 扩展指示为依赖项的能力,而不仅仅是包。它无法安装这些,但如果您的服务器环境不支持您的应用程序,它确实给了它一个大声尖叫的机会。我敢打赌,如果您将 #include <assert.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> /* structure to hold all the data for a matrix. See discussion * in comments to understand this structure. */ struct matrix { int m_rows,m_cols; double **m_data; double *unused_1; /* not used. Only to warrant the * alignment to double * values. */ double unused_2; /* same as before. */ }; /* this are simple providers of matrix data,depending on how we * want to initialize the matrix. */ /* initializes each element to a constant provided by reference */ double prov_const(void *cb_par,int row,int col) { double *val_ref = cb_par; return *val_ref; } double prov_list(void *cb_par,int col) { double **p = cb_par; return *(*p)++; } double prov_copy(void *cb_par,int col) { struct matrix *src = cb_par; assert(row < src->m_rows && col < src->m_cols); return src->m_data[row][col]; } /* initializes kroneker matrix. Identity */ double prov_ident(void *unused,int col) { return row == col ? 1.0 : 0.0; } /* provides elements from file stream */ double prov_file(void *cb_par,int col) { FILE *in = cb_par; double ret_val; if (isatty(fileno(in))) { fprintf(stderr,"mat[%d][%d]: ",row,col); fflush(stderr); } int res = fscanf(in,"%lg",&ret_val); assert(res == 1); return ret_val; } /* this creates the whole matrix with just one malloc */ struct matrix *mat_creat( int rows,int cols,/* dimensions */ double prov(void *cd,int col),/* initializer */ void *cd) /* initializer callback data */ { size_t total_cells = rows * cols; /* See discussion about alignment in the comments to * understand the code below. */ struct matrix *ret_val = malloc( sizeof *ret_val + rows * sizeof *ret_val->m_data + total_cells * sizeof **ret_val->m_data); assert(ret_val != NULL); /* place the array with bigger element cell first,* to warrant the smaller data alignment */ double **aux1; /* pointer to array of row pointers */ double *aux2; /* pointer to array of double cells */ if (sizeof *ret_val->m_data > sizeof **ret_val->m_data) { /* put the pointers to rows first,pointer is bigger */ aux1 = (double **) (ret_val + 1); /* row pointers array */ aux2 = (double *) (aux1 + rows); /* double row arrays */ } else { /* put the cells first,double is bigger than pointer */ aux2 = (double *) (ret_val + 1); aux1 = (double **) (aux2 + total_cells); } ret_val->m_rows = rows; ret_val->m_cols = cols; ret_val->m_data = aux1; /* start the build */ for (int row = 0; row < rows; row++) { *aux1++ = aux2; /* the pointer to the row */ if (prov) { for (int col = 0; col < cols; col++) { /* this provides each element of the row */ *aux2++ = prov(cd,col); } } else { /* no provider,no cell initialization */ aux2 += cols; } } return ret_val; } struct matrix *mat_add(struct matrix *dst,struct matrix *b) { assert(dst->m_rows == b->m_rows && dst->m_cols == b->m_cols); for (int row = 0; row < dst->m_rows; row++) { for (int col = 0; col < dst->m_cols; col++) { dst->m_data[row][col] += b->m_data[row][col]; } } return dst; } struct matrix *mat_mscalar(struct matrix *dst,double b) { for (int row = 0; row < dst->m_rows; row++) { for (int col = 0; col < dst->m_cols; col++) { dst->m_data[row][col] *= b; } } return dst; } struct matrix *mat_prod(struct matrix *a,struct matrix *b) { assert(a->m_cols == b->m_rows); struct matrix *ret_val = mat_creat(a->m_rows,b->m_cols,NULL,NULL); for(int row = 0; row < a->m_rows; row++) { for (int col = 0; col < b->m_cols; col++) { double accum = 0.0; for (int k = 0; k < a->m_cols; k++) { accum += a->m_data[row][k] * b->m_data[k][col]; } ret_val->m_data[row][col] = accum; } } return ret_val; } trix *mat_pow(struct matrix *a,unsigned N) { /* ensure matrix is square */ assert(a->m_rows == a->m_cols); struct matrix *ret_val = mat_creat(a->m_rows,a->m_cols,prov_ident,NULL); if (N == 0) return ret_val; /* a**0 -> I */ /* search for most significant bit */ unsigned bit = 0; while ((1 << bit) < N) bit++; bit = 1 << bit; while (bit) { /* square it */ struct matrix *aux = mat_prod(ret_val,ret_val); free(ret_val); /* must free after multiplying */ ret_val = aux; /* assign the new matrix. */ if (bit & N) { /* multiply by a */ aux = mat_prod(ret_val,a); free(ret_val); ret_val = aux; } bit >>= 1; } return ret_val; } ssize_t mat_print(struct matrix *m,FILE *out,char *fmt) { #define ACT() do{ \ if (n < 0) { \ return n; \ } else { \ ret_val += n; \ } \ } while (0) ssize_t ret_val = 0,n; char *sep1 = "{"; for (int row = 0; row < m->m_rows; row++) { n = fprintf(out,"%s",sep1); ACT(); sep1 = ",\n "; char *sep2 = "{"; for (int col = 0; col < m->m_cols; col++) { n = fprintf(out,sep2); ACT(); sep2 = ","; n = fprintf(out,fmt,m->m_data[row][col]); ACT(); } n = fprintf(out,"}"); ACT(); } n = fprintf(out,"}\n"); ACT(); return ret_val; } int main(int argc,char **argv) { static double values[] = { 1.0,2.0,3.0,4.0,0.0,1.0,5.0,6.0,7.0,}; static double coefs[] = { 1.0,-4.0,}; static double zero = 0.0; double *p = values; struct matrix *M = mat_creat(4,4,prov_list,&p); printf("M =\n"); mat_print(M,stdout,"%g"); struct matrix *P = mat_creat(4,prov_const,&zero); printf("P[M] = "); for (int coef = 0; coef <= 4; coef++) { if (coef) { if (coefs[coef] > 0.0) { printf(" +"); } else { printf(" "); } } printf("%g * %s",coefs[coef],coef ? "A" : "I"); if (coef > 1) { printf("^%d",coef); } } printf(" =\n"); for (int coef = 0; coef <= 4; coef++) { printf("M\n"); mat_print(M,"%g"); printf("**%d\n",coef); struct matrix *TN = mat_pow(M,coef); mat_print(TN,"%g"); TN = mat_mscalar(TN,coefs[coef]); printf("*%lg\n",coefs[coef]); mat_print(TN,"%g"); P = mat_add(P,TN); printf("+\n"); mat_print(P,"%g"); free(TN); } free(P); free(M); } 添加到它并运行 ext-dom 它会失败。某些 IDE 甚至会在需要时提示您添加类似内容。

说了这么多,请确保安装了 php xml extension。还要检查您在 composer install 中的错误日志。