Php 是否可以在不访问默认临时目录的情况下上载文件?

Php 是否可以在不访问默认临时目录的情况下上载文件?,php,.htaccess,Php,.htaccess,我有一个非常通用的php文件上传脚本。但是问题是,我在上托管网站的服务器不允许我配置php.ini和上传\u tmp\u dir。类似于ini\u集(“upload\u tmp\u dir”、“your\u directory\u path”)的操作也不起作用,因为upload\u tmp\u dir将在ini\u集运行时已经执行 是否可以上载绕过临时文件创建的文件(任何语言)?由于函数move_上传的_文件($temp_文件,$target_文件)禁止我使用当前解决方案执行此操作 我无法访问服

我有一个非常通用的php文件上传脚本。但是问题是,我在上托管网站的服务器不允许我配置php.ini和
上传\u tmp\u dir
。类似于
ini\u集(“upload\u tmp\u dir”、“your\u directory\u path”)
的操作也不起作用,因为
upload\u tmp\u dir
将在
ini\u集运行时已经执行

是否可以上载绕过临时文件创建的文件(任何语言)?由于函数
move_上传的_文件($temp_文件,$target_文件)禁止我使用当前解决方案执行此操作

我无法访问服务器根/tmp(临时文件将存储在服务器上的位置)。我理解为什么托管公司不允许人们更改临时根目录,因为同一台服务器上可能有很多客户。因此,更改php.ini文件将影响服务器上的所有用户

此外,我还看到了一些关于更改vhost.conf文件的解决方案(理论上可以在客户端对客户端的基础上解决此问题,但我一直与服务提供商联系,他们似乎不愿意帮助我更改此文件)

我的php脚本:

$target_directory = "/wp-content/uploads/2017/04/";
$filename = $_POST['fileLocation'];
$temp_filename = $_FILES["file"]["tmp_name"];
$size = $_FILES["file"]["size"];

// Produce a unique filename
$randomNumber = time();
$filetype = substr($filename, strrpos($filename, '.'));
$target_file = $target_directory . $randomNumber . $filetype;
$local_path = "/wp-content/uploads/2017/04/" . $randomNumber . $filetype;

// Make sure the webserver process owner owns the destination folder
// run exec('whoami'), Mac could be _www
if(!move_uploaded_file($temp_filename, $target_file))
            //

// = = = = Add to database = = = =
// Establish connection to database
$conn = mysql_connect("***", "***", "***") or die(mysql_error());
//Select database
$db = mysql_select_db("***");

// Collect data from form
$companyname = $_POST["companyname"];
$companytext = $_POST["companytext"];

$query = "INSERT INTO posts (companyname, companytext, image) VALUES ('$companyname', '$companytext', '$local_path')";
mysql_query($query);
mysql_close();
        //

如果您无法访问默认的
upload\u tmp\u dir
且无法更改,则应切换到其他主机。如果你联系过他们,而他们不愿意帮助你,情况就更糟了


您的问题可能有技术解决方案,但如果在正常的托管环境中可以开箱即用,那么这些解决方案都不重要。

您的代码容易受到SQL注入的攻击。请学习使用。主题:您收到了什么错误消息
$target\u目录
在我看来并不合适,除非您的网站真的直接部署到文件系统根目录中(请参阅leading
/
)。是的。。。事实上,这是我工作的客户,所以我真的没有做出这些决定的奢侈。我建议不要使用
one
作为服务提供商。如果他们付钱给你,他们应该听取你的建议,包括“该托管提供商没有为你提供合适的工作环境”。