无法使用提供程序禁用的Swift Mailer - proc_open()函数在Laravel中发送电子邮件

时间:2017-08-24 06:44:17

标签: laravel swiftmailer

我的网络托管服务商在php中停用 proc_open 功能,我无法再发送电子邮件了。

我收到此错误日志:

  出于安全原因,

proc_open()已被禁用

我使用laravel默认的Swiftmailer。 我该怎么办?

2 个答案:

答案 0 :(得分:3)

仅当Swiftmailer使用外部可执行文件(如sendmail)时才需要

proc_open。您仍然可以使用文档中描述的SMTP,Mailgun或one of the other drivers之类的其他传输。

作为测试,请尝试使用SMTP驱动程序,然后输入您自己的SMTP邮件详细信息 - 无论您使用何种方式从邮件客户端发送邮件。请在.env

中尝试以下操作
MAIL_DRIVER=smtp
MAIL_HOST=your.smtp.host // (copy from your mail client)
MAIL_PORT=your.smtp.port // (copy from your mail client)
MAIL_USERNAME=your.smtp.username // (copy from your mail client)
MAIL_PASSWORD=your.smtp.password // (copy from your mail client)

这可能不适合永久性解决方案,但会让您测试您可以在没有proc_open的情况下发送邮件。我使用免费的Mailgun层,可以推荐它。

答案 1 :(得分:1)

检查和更改是disable_functions = exec,system,dl,passthru,chown,shell_exec,popen,proc_open 有此行。

php.ini

选中此安全模式here禁用的功能列表。

<强>更新
一旦找到,请按照以下说明操作: 从import java.util.*; import java.util.Random; class Graph{ class Edge{ int v; public Edge(int v){ this.v=v; } @Override public String toString(){ return "("+v+")"; } } List<Edge> G[]; public Graph(int n){ G=new LinkedList[n]; for(int i=0;i<G.length;i++) G[i]=new LinkedList<Edge>(); } void addEdge(int u,int v){ G[u].add(0,new Edge(v)); } @Override public String toString(){ String result=""; for(int i=0;i<G.length;i++) result+=i+"=>"+G[i]+"\n"; return result; } } public class Graph01 { public static void main(String[] args) { int numero = (int) (Math.random() * 5) + 5; int numero1 = (int) (Math.random() * 5) + 5; int numero2 = (int) (Math.random() * 5) + 5; Graph g = new Graph(numero); /* g.addEdge(numero1, numero2 ); g.addEdge(numero1, numero2 ); */ System.out.println(g); } } 文件中的disable_functions中删除 proc_open

OR

如果您没有访问/权限,请让您的托管服务提供商删除上面的字符串。