Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 移动\u上传\u文件挂起?_Php_Upload_Flash_Apache2 - Fatal编程技术网

Php 移动\u上传\u文件挂起?

Php 移动\u上传\u文件挂起?,php,upload,flash,apache2,Php,Upload,Flash,Apache2,我似乎有一个奇怪的错误,我只是不太明白。我的网站在一台服务器上运行,但当我将其转移到新服务器时,它停止了工作。我相信我已经将错误缩小到以下代码行: $ret = move_uploaded_file($tmp_name, $orig_path); 这是通过AJAX调用执行的,因此调试起来有点棘手,但是脚本可以发回一个错误代码,然后我的JavaScript会发出警报。因此,我将其包装在以下两条调试语句中: echo json_encode(array( 'success' =>

我似乎有一个奇怪的错误,我只是不太明白。我的网站在一台服务器上运行,但当我将其转移到新服务器时,它停止了工作。我相信我已经将错误缩小到以下代码行:

$ret = move_uploaded_file($tmp_name, $orig_path);
这是通过AJAX调用执行的,因此调试起来有点棘手,但是脚本可以发回一个错误代码,然后我的JavaScript会发出警报。因此,我将其包装在以下两条调试语句中:

echo json_encode(array(

    'success' => false,

    'errno' => $tmp_name.' -> '.$orig_path,

));

exit;



$ret = move_uploaded_file($tmp_name, $orig_path);



echo json_encode(array(

    'success' => false,

    'errno' => 'no error',

));

exit;
第一个可以很好地工作,并吐出如下内容:

error /tmp/phpk3RICU -> /home/username/Websites/website/photos/o/2-4a3354dd017a9.jpg
也许我有点像linux noob,但我在我的系统上找不到
/tmp/phpk3RICU
(脚本一退出它就被删除了吗?)。不过,稍后会有更多关于这方面的信息

如果我删除第一个调试检查并让
move\u upload\u file
运行,第二个调试检查似乎永远不会执行,这让我相信move\u upload\u file挂起了

如果我没有使用
$tmp\u name
而是使用了我知道不存在的文件,则会执行第二次检查。所以看起来它只是不想移动那个tmp文件,但它没有报告错误

我正在我的Unbutu机器上运行一个新安装的灯组,通过apt get安装。。。如果你需要更多信息,请告诉我


哦。。不知道是否相关,但文件是通过flash上传的。

您是否通过AJAX调用上传文件?
上传的文件在您上传到的脚本执行完毕后会立即被删除-这就是为什么您在/tmp中找不到它。

尝试告诉PHP吐出所有错误:

error_reporting(E_ALL);
这可能是一个配置差异,导致您的一台服务器出现故障。从
移动上传的文件()
页面:

注意:
move\u uploaded\u file()
两者都是 安全模式和
open\u basedir
aware。 但是,这些限制仅适用于 在目标路径上设置为允许 移动上载的文件,其中 文件名可能与此冲突 限制<代码>移动上传的文件() 确保此操作的安全性 只允许上传那些文件 通过PHP进行移动


啊。问题在于权限。755在另一台服务器上已经足够了,但对于这台服务器来说似乎不够。。。不太清楚为什么,我想PHP是在另一个用户下运行的?我真的不确定整个权限的工作原理。真正让我感到奇怪的是,为什么
mkdir
move\u上传的文件
没有失败并返回false…

mkdir实际上也失败了。。。似乎不想创建文件,也不会抛出错误。