Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php tempnam()在客户端服务器上不工作_Php - Fatal编程技术网

Php tempnam()在客户端服务器上不工作

Php tempnam()在客户端服务器上不工作,php,Php,我做了一个脚本,它必须从ftp服务器加载一个文件,然后解析它。该代码依赖于tempname来存储临时存储ftp文件的文件。在我的开发服务器(使用PHP5.3.10)上,它可以完美地工作,但是在客户端机器(使用PHP5.2.17)上,它不能工作,并且给了我: Warning: ftp_rawlist() [function.ftp-rawlist]: Unable to create temporary file. Check permissions in temporary files dire

我做了一个脚本,它必须从ftp服务器加载一个文件,然后解析它。该代码依赖于tempname来存储临时存储ftp文件的文件。在我的开发服务器(使用PHP5.3.10)上,它可以完美地工作,但是在客户端机器(使用PHP5.2.17)上,它不能工作,并且给了我:

Warning: ftp_rawlist() [function.ftp-rawlist]: Unable to create temporary file. Check permissions in temporary files directory.
有人能告诉我我能做什么吗? (我对php的可能性有点不了解)

我使用了以下代码:

define ("LOCALFILE",tempnam('/tmp', 'data-'));
define ("USER","myusername");
define ("PASS","mypassword");
define('SERVER', "ftpserver.com");
define ("DIR","/path/");

function getFTPFile(){

    // connect
    if(!($conn_id = @ftp_connect(SERVER))){
        Error::throwOne("Could not connect to ".SERVER);

    };
    // login 
    if(!($login_result = @ftp_login($conn_id, USER, PASS))){
        Error::throwOne("LOGIN INCORRECT! user:".USER." pass:".PASS);
    };
    // try to change the directory to somedir
    if (!ftp_chdir($conn_id, DIR)) {
        Error::throwOne("Couldn't change directory\n");
    }; 

    if(!($a = ftp_rawlist($conn_id, '-1t'))){
        Error::throwOne("Couldn't get ftp_rawlist\n");
    };

    $server_file=($a[0]);
    if (!ftp_get($conn_id, LOCALFILE, $server_file, FTP_BINARY)) {
        Error::throwOne("Couldn't get file\n");
    };
    ftp_close($conn_id);    
};

在我看来,这个错误就像是系统生成的,与您的tmpname无关。在内部,FTP将文件存储在标准临时目录的temp filename中自己的temp文件中,直到下载时为止,然后将其移动到指定的位置

尝试将此代码放在下载代码之前:

$tmpdir = sys_get_temp_dir();
echo "Temp dir: $tmpdir\n";
echo  is_writable($tmpdir) ? "Temp dir is writable" : "Temp dir is not writable";

这将告诉您是否有权限写入系统临时目录。我进一步建议您在代码中使用此
$tmpdir
变量,而不是硬编码“/tmp”。

在我看来,该错误类似于系统生成的,与您的tmpname无关。在内部,FTP将文件存储在标准临时目录的temp filename中自己的temp文件中,直到下载时为止,然后将其移动到指定的位置

尝试将此代码放在下载代码之前:

$tmpdir = sys_get_temp_dir();
echo "Temp dir: $tmpdir\n";
echo  is_writable($tmpdir) ? "Temp dir is writable" : "Temp dir is not writable";
这将告诉您是否有权限写入系统临时目录。我进一步建议您在代码中使用这个
$tmpdir
变量,而不是硬编码“/tmp”。

我发现了这个问题。 因为我的主人不喜欢/tmp目录(谁会责怪他们呢) 我需要第一套 putenv('TMPDIR=/我的提供者给我的tmp目录'); 然后它与tempname一起工作

我发现了问题。 因为我的主人不喜欢/tmp目录(谁会责怪他们呢) 我需要第一套 putenv('TMPDIR=/我的提供者给我的tmp目录');
然后它与tempname一起工作

您有权写入指定目录吗?在我看来,该错误类似于系统生成的错误,与您的
tmpname
无关。在内部,FTP将文件存储在标准临时目录的temp filename中自己的temp文件中,直到下载时为止-然后将其移动到指定的位置。您有权写入指定目录吗?在我看来,该错误类似于系统生成的错误,与您的
tmpname
无关。在内部,FTP将文件存储在标准临时目录的临时文件名中自己的临时文件中,直到下载时为止,然后将其移动到您指定的位置。非常感谢。已尝试编写代码并获取临时目录:/tmp临时目录不可写,因此我似乎必须联系我的网络主机管理员?现在我知道我无法写入临时目录。我想我需要另一种方式来编写我的ftp-data。是的,这应该是你的下一步。当然,你可以尝试使用其他目录来保存临时文件,但这可能对ftp没有帮助…我不能使用chmod创建一个文件吗?非常感谢。已尝试编写代码并获取临时目录:/tmp临时目录不可写,因此我似乎必须联系我的网络主机管理员?现在我知道我无法写入临时目录。我想我需要另一种方式来编写我的ftp-data。是的,这应该是你的下一步。当然,你可以尝试为你的临时文件使用其他目录,但这对ftp可能没有帮助…我不能用chmod创建一个文件吗?虽然这个问题很老,但你能将你的答案标记为“正确答案”吗这样这个问题就可以解决了?谢谢虽然这个问题已经很老了,你能把你的答案标记为“正确答案”吗?这样这个问题就可以结束了?谢谢