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实际上也失败了。。。似乎不想创建文件,也不会抛出错误。