将PHP警告转换为用户定义的异常

将PHP警告转换为用户定义的异常,php,file-upload,php-5.6,Php,File Upload,Php 5.6,使用的语言:PHP 版本:5.6 我正在尝试使用以下功能将文件上载到服务器: move_uploaded_file($source,$destination); 无论何时由于以下原因导致文件无法上载: 拒绝许可, 找不到目标文件夹, 等 它只会引发一个警告,并继续处理代码的其他部分。 但是我想捕捉那个警告,如果有任何警告是以它们的名字出现的,我想改变程序的流程,这样我就可以抛出适当的异常 我当前正在使用try{}catch(){}块上载文件,但没有针对警告引发异常 已编辑 找到这个 move_

使用的语言:PHP
版本:5.6

我正在尝试使用以下功能将文件上载到服务器:

move_uploaded_file($source,$destination);
无论何时由于以下原因导致文件无法上载:
  • 拒绝许可,
  • 找不到目标文件夹,
  • 它只会引发一个警告,并继续处理代码的其他部分。 但是我想捕捉那个警告,如果有任何警告是以它们的名字出现的,我想改变程序的流程,这样我就可以抛出适当的异常

    我当前正在使用
    try{}catch(){}
    块上载文件,但没有针对警告引发异常

    已编辑 找到这个

    move_uploaded_file($source,$destination);
    

    根据文件上载的状态返回true或false。但它没有具体说明原因。怎么知道呢?

    我想
    设置错误处理程序()
    将是正确的选择。确保您仔细阅读了文档

    首先,您需要一个函数(或公共类方法)来处理错误。 例如:

    其次,调用init/bootstrap代码中的某个地方的
    set\u error\u handler
    。指定错误处理程序方法,并设置要通知的情况的适当标志

    $flags = E_ALL & ~(E_STRICT | E_NOTICE);
    set_error_handler('error_handler', $flags);
    error_reporting($flags);
    

    警告一句:如果您打算捕获内存不足之类的错误,那么您的代码应该准备使用尽可能少的内存。此外,资源可能不再可用(如数据库连接或文件句柄)

    我想
    设置错误处理程序()
    将是正确的选择。确保您仔细阅读了文档

    首先,您需要一个函数(或公共类方法)来处理错误。 例如:

    其次,调用init/bootstrap代码中的某个地方的
    set\u error\u handler
    。指定错误处理程序方法,并设置要通知的情况的适当标志

    $flags = E_ALL & ~(E_STRICT | E_NOTICE);
    set_error_handler('error_handler', $flags);
    error_reporting($flags);
    

    警告一句:如果您打算捕获内存不足之类的错误,那么您的代码应该准备使用尽可能少的内存。此外,资源可能不再可用(如数据库连接或文件句柄)

    这是一个警告,所以它不会抛出自己的异常。如果失败,则返回false,因此您可以始终在那里抛出自己的异常。@aynber感谢您的输入。但是,如果你想知道文件上传失败的原因,你可能想看看这里()。使用错误处理程序可以获得更多信息。在错误处理程序中,您可以查找
    权限被拒绝
    等。如果您仍在使用PHP5,我强烈建议尽快升级。不再支持此版本。这是一个警告,所以它不会抛出自己的异常。如果失败,则返回false,因此您可以始终在那里抛出自己的异常。@aynber感谢您的输入。但是,如果你想知道文件上传失败的原因,你可能想看看这里()。使用错误处理程序可以获得更多信息。在错误处理程序中,您可以查找
    权限被拒绝
    等。如果您仍在使用PHP5,我强烈建议尽快升级。不再支持此版本。