Php 服务器端文件上载不稳定
我有一个应用程序,这取决于它上传文件的能力 然而,在我更改了PHP.init文件中的一些设置之后,我在上传文件时遇到了一些问题 首先是一些重要信息:Php 服务器端文件上载不稳定,php,apache,ubuntu,file-upload,upload,Php,Apache,Ubuntu,File Upload,Upload,我有一个应用程序,这取决于它上传文件的能力 然而,在我更改了PHP.init文件中的一些设置之后,我在上传文件时遇到了一些问题 首先是一些重要信息: 服务器是ubuntu 14.04 我使用的是Apache2.4 现在一切都开始于我的客户无法将更大的文件上传到我的服务器上。因此,我所做的是更改我的php.ini中的设置: (注意我在这里/etc/php5/apache2/php.ini) 应用这些更改后,我调用了命令:sudo-service-apache2-restart 然后我尝试上载一
- 服务器是ubuntu 14.04
- 我使用的是Apache2.4
php.ini
中的设置:
(注意我在这里/etc/php5/apache2/php.ini
)
应用这些更改后,我调用了命令:sudo-service-apache2-restart
然后我尝试上载一个大小如下的文件:82.4MB
在php中,我使用以下函数来处理我的上载:
public function uploadFile()
{
if ($this->isAjax()) {
$comp_id = $_POST['comp_id'];
$name = $_FILES['file1']['name'];
$name = substr($name, strpos($name, "."), strlen($name));
switch ($name) {
case '.jpg':
case '.png':
case '.jpeg':
case '.bmp':
case '.JPG':
case '.PNG':
case '.JPEG':
case '.BMP':
$_FILES['file1']["name"] = "image_file".$name;
break;
case '.MP4':
case '.mp4':
$_FILES['file1']["name"] = "mp4_file".$name;
break;
case '.FLV':
case '.flv':
$_FILES['file1']["name"] = "flv_file".$name;
break;
case '.MP3':
case '.mp3':
$_FILES['file1']["name"] = "sound_file".$name;
break;
case '.docx':
case '.txt':
case '.pdf':
case '.odt':
case '.DOCX':
case '.TXT':
case '.PDF':
case '.ODT':
$_FILES['file1']["name"] = "document_file".$name;
break;
default:
die("Unknown/not permitted file type");
}
$location = "./site/resources/upload/test_module/" . $comp_id . "/" . $_FILES['file1']["name"];
if (!file_exists("./site/resources/upload/test_module/" . $comp_id . "/")) {
mkdir("./site/resources/upload/test_module/" . $comp_id . "/", 0777, true);
}
move_uploaded_file($_FILES['file1']['tmp_name'],
$location);
chmod($location, 777);
$path = "/site/resources/upload/test_module/" . $comp_id . "/" . $_FILES['file1']["name"];
chmod($path, 777);
switch ($name) {
case '.jpg':
case '.png':
case '.jpeg':
case '.bmp':
case '.JPG':
case '.PNG':
case '.JPEG':
case '.BMP':
$this->getDatabase()->prepTemplate('UPDATE test_component SET image_path = ? WHERE id = ?', 'si', array($path, $comp_id));
break;
case '.MP4':
case '.mp4':
if ($_FILES['file1']['type'] != 'audio/mp3') {
$this->getDatabase()->prepTemplate('UPDATE test_component SET video_mp4_path = ? WHERE id = ?', 'si', array($path, $comp_id));
} else {
$this->getDatabase()->prepTemplate('UPDATE test_component SET sound_path = ? WHERE id = ?', 'si', array($path, $comp_id));
}
break;
case '.FLV':
case '.flv':
$this->getDatabase()->prepTemplate('UPDATE test_component SET video_flv_path = ? WHERE id = ?', 'si', array($path, $comp_id));
break;
case '.MP3':
case '.mp3':
$this->getDatabase()->prepTemplate('UPDATE test_component SET sound_path = ? WHERE id = ?', 'si', array($path, $comp_id));
break;
case '.docx':
case '.txt':
case '.pdf':
case '.odt':
case '.DOCX':
case '.TXT':
case '.PDF':
case '.ODT':
$this->getDatabase()->prepTemplate('UPDATE test_component SET text_path = ? WHERE id = ?', 'si', array($path, $comp_id));
break;
default:
die("Unknown/not permitted file type");
}
}
}
从这个函数中可以看到,我试图设置文件夹和文件的权限,以确保以后可以访问它们
在上传的过程中,我试着遵循这个过程,注意到服务器上没有创建文件夹,也没有添加任何文件
所以我觉得上传在某种程度上失败了
在我更改php.ini中的设置之前,我可以上载较小的文件,但是现在我甚至无法上载大小为4MB的文件。(或任何其他文件)
上传可以在我的本地机器上运行,没有任何问题,但不能在我的服务器上运行
以前有没有人经历过这种情况,或者知道它可能是什么
更新
添加错误打印后,我得到以下错误:
Warning: chmod(): No such file or directory in /var/www/test_learningbank/site/pages/models/TestMaker.php on line 263
Warning: chmod(): No such file or directory in /var/www/test_learningbank/site/pages/models/TestMaker.php on line 265
打印出文件给了我:
{"name":"Vaks-DCK.mp4","type":"","tmp_name":"","error":1,"size":0}
这里值得注意的是,error=1,size=0???您在许多/site/resources/upload/test\u module/
中使用了一个点,但将其留给了$path=“/site/resources/upload/test\u module/”
,这可能是一个促成因素。在打开@Fred ii之后立即将错误报告添加到文件顶部-遗憾的是,这没有起到作用:sDid添加错误报告会返回任何错误/结果吗?文件夹是否也设置了写入权限?上载还需要enctype。@Fred ii-没有错误,也没有结果,但上载是使用ajax完成的,我以前可以上载,但现在我无法上载任何文件。@Fred ii-我在ajax中得到响应:警告:chmod():第259行的/var/www/test\u learningbank/site/pages/models/TestMaker.php中没有此类文件或目录警告:chmod():第261行的/var/www/test\u learningbank/site/pages/models/TestMaker.php中没有此类文件或目录
{"name":"Vaks-DCK.mp4","type":"","tmp_name":"","error":1,"size":0}