Php 在哪里设置我的$u文件[';temp#u name';]-angularjs应用程序
这件事已经困扰我好几个小时了 我正在用angularjs编写一个应用程序,并试图让文件上传的php端正常工作 php脚本似乎试图将文件从/tmp/randomuniquefilename复制到正确的目录。问题是我根本不希望它存储在我的根临时文件夹中。我已将PHP.ini默认文件上载路径更改为/var/www/tmp/the/var/www/tmp/文件夹存在并具有正确的权限 我想知道如何/在哪里设置我的Php 在哪里设置我的$u文件[';temp#u name';]-angularjs应用程序,php,angularjs,Php,Angularjs,这件事已经困扰我好几个小时了 我正在用angularjs编写一个应用程序,并试图让文件上传的php端正常工作 php脚本似乎试图将文件从/tmp/randomuniquefilename复制到正确的目录。问题是我根本不希望它存储在我的根临时文件夹中。我已将PHP.ini默认文件上载路径更改为/var/www/tmp/the/var/www/tmp/文件夹存在并具有正确的权限 我想知道如何/在哪里设置我的$\u文件['file']['tmp\u name']变量,以便我可以更改它。。我以前只尝试了
$\u文件['file']['tmp\u name']
变量,以便我可以更改它。。我以前只尝试了$\u文件['file']['tmp\u name']='/var/www/tmp/'
,但这对我不起作用
我的php错误:
[Tue Jan 07 15:46:14 2014][error][client 127.0.0.1]PHP警告:移动上传的文件(/var/www/funandgames/jobernize/upload/bleg.png):无法打开流:第18行/var/www/funandgames/jobernize/upload/test.PHP中的权限被拒绝,请参考:http://127.0.0.1/funandgames/jobernize/
[Tue Jan 07 15:46:14 2014][error][client 127.0.0.1]PHP警告:移动上传的文件():无法将“/tmp/phpbkz0xn”移动到“/var/www/funandgames/jobernize/upload/bleg.png”中的/var/www/funandgames/jobernize/upload/test.PHP”,请参考:http://127.0.0.1/funandgames/jobernize/
可能是我的js设置,还是PHP
以下是我的php:
<?php
if ( !empty( $_FILES ) ) {
function varDumpToString ($var)
{
ob_start();
var_dump($var);
$result = ob_get_clean();
error_log($result);
}
varDumpToString($_FILES);
$tempPath = '/var/www' . $_FILES[ 'file' ][ 'tmp_name' ];
$uploadPath = dirname( __FILE__ ) . '/' . $_FILES[ 'file' ][ 'name' ];
error_log($tempPath);
move_uploaded_file( $tempPath, $uploadPath );
$answer = array( 'answer' => 'File transfer completed' );
$json = json_encode( $answer );
echo $json;
} else {
echo 'No files';
}
?>
我只是将/var/www添加到路径中,现在我没有收到任何错误,但是没有发生任何事情,文件没有被复制
由于某种原因,temp name似乎包含/tmp/而不仅仅是一个文件名,这正常吗?只需将tmp\u file\u upload的权限更改为755以下是命令chmod-R 755 tmp\u file\u upload 这是因为
images
和tmp\u file\u upload
只能由root
用户写入。为了使上传工作正常进行,我们需要使这些文件夹的所有者与httpd进程所有者相同,或者使它们全局可写(糟糕的做法)
$ps aux | grep httpd
。第一列是所有者,通常是nobody
images
和tmp\u file\u upload
的所有者更改为nobody
或步骤1中找到的任何所有者
$sudo chown nobody/var/www/html/mysite/images/
$sudo chown nobody/var/www/html/mysite/tmp\u file\u upload/
images
和tmp\u文件上传
现在可以由所有者写入,如果需要[看起来您已经准备好了]。在@Dmitry Teplyakov回答中提到
$sudo chmod-R 0755/var/www/html/mysite/images/
$sudo chmod-R 0755/var/www/html/mysite/tmp\u file\u upload/
open\u basedir
指令更改
php.ini
后是否重新启动了web服务器?仅供参考,tmp\u名称
设置在服务器端,您的权限被拒绝错误与源文件无关,但与目标路径无关。是的,我做了,是的,我知道,谢谢,还没有时间处理目标路径,只是想获得正确的源路径。检查phpinfo()
显示的设置内容。另外,tmp\u name
将包含完整路径。您没有在它前面加任何前缀,所以默认设置了tmp\u name
?我现在就这么做,谢谢,通常move\u uploaded\u file()
的第一个参数就是$\u FILES['file']['tmp\u name']
。另请注意手册中的“如果此处指定的目录(upload\u tmp\u dir
)不可写,PHP将返回到系统默认的临时目录。”。这可以解释你所看到的。如果系统tmp dir可用,那么使用它也没有什么错。更多的主机以普通用户的身份通过suExec或类似的方式运行PHP脚本。自动假定httpd用户是必需的是愚蠢的。我检查了,它不是以无人身份运行的,而是以拥有所有必需文件权限的同一用户身份运行的