我正在尝试使用php将大文件上传到ftp服务器。 我可以上传小文件,但是在上传大文件时遇到问题。 我查了一下,发现需要设置upload_max_filesize和post_max_size,将ftp设置为被动模式,并将时间限制设置为从不。 我没有设置时间限制,现在我没有返回任何错误,但是也没有上传文件。 如果查看底部的if (!$upload) {
行,它应该回显某些内容,但事实并非如此。 更重要的是,它不起作用。 关于出什么问题或者我需要做些什么来做这项工作的任何见解? 谢谢!
ini_set('upload_max_filesize', '50M');
ini_set('post_max_size', '50M');
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
exit;
}
// turn passive mode on
ftp_pasv($conn_id, true);
if($_FILES['upload_file']['name']!=''){
$source_file = $_FILES['upload_file']['tmp_name'];
$destination_file = $_FILES['upload_file']['name'];
// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
// check upload status
if (!$upload) {
echo "FTP upload has failed!<br />";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file<br />";
}
}
我发现我无法从php页面设置upload_max_filesize值; 另外,我似乎无法使.htaccess正常工作:如果我有.htaccess文件,它将导致HTTP错误500。而且,我无权访问php.ini。
我还能如何更改upload_max_filesize值?
我的网络管理员告诉我,我在基于IIS Windows的系统上,所以.htaccess文件不起作用。 有没有一种方法可以影响web.config的文件上传大小?
从此站点: http : //www.php.net/manual/zh/ini.php
'upload_max_filesize'和'post_max_size'
属于PHP_INI_PERDIR类型
这意味着可以在“ php.ini,.htaccess或httpd.conf”中设置条目。 因此,您无法在脚本中进行设置。
-编辑-
一个类似的问题: 在PHP上更改upload_max_filesize
-编辑2-
就个人而言,我想做同样的事情(通过ftp上传大文件)并最终编写一个Java应用程序。 对于处理大文件,php并不是真正的最佳方法。 Web浏览器并非如此。 因此,对于处理大文件,我建议考虑其他方法:(java,swf,javascript,...)
有空的时候我想尝试一下的东西是http://nodejs.org/
正如@AngeDeLaMort正确指出的那样,您不能使用速记符号在PHP.ini之外设置配置值。
参考: 在PHP上更改upload_max_filesize
尝试这样做。
在您的根目录中创建.htaccess文件,并添加以下内容。
php_value upload_max_filesize 50M
php_value post_max_size 50M
php_value max_execution_time 200
php_value max_input_time 200