我的网络托管服务商在php中停用 proc_open 功能,我无法再发送电子邮件了。
我收到此错误日志:
出于安全原因,proc_open()已被禁用
我使用laravel默认的Swiftmailer。 我该怎么办?
答案 0 :(得分:3)
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
如果您没有访问/权限,请让您的托管服务提供商删除上面的字符串。