2016-05-12 100 views
1

Im新的PHP,但习惯于Java。 我有一个文件,dd-functions.php包含一个函数(writeToLog)。 该函数将使用log-statement创建一个变量,然后将其写入文件。file_put_contents不在一个地方工作,但在代码中的其他地方工作

奇怪的是,当它从一个php文件(file1.php)调用时,它完美地工作,但是当从另一个php文件(file2.php)调用时,它不会向该文件写入任何内容。 在file1.php和file2.php中,functions.php都包含一次。

这怎么可能?

Function.php

/* Log for user */ 
function writeToLog($user, $analyseName, $remaining_downloads) { 

$uid = $user->ID; 

$userdata = get_userdata($uid); 
if ($userdata->first_name) { 
    $username = $userdata->first_name . ' ' . $userdata->last_name; 
} else { 
    $username = $userdata->user_login; 
} 
date_default_timezone_set('Europe/Oslo'); 
$date = date('d.m.Y H:i:s'); 
$s2member_access_level = get_user_field ("s2member_access_level", $uid); 
$userLog = $uid . "\t" . $date . "\t" . $username . "\t" . $user->user_email . "\t" . $analyseName . "\t" . $remaining_downloads . "\t" . $s2member_access_level . "\n"; 

file_put_contents('analyse-email-click-log.txt', $userLog , FILE_APPEND); 
} 
+0

什么是get_userdata?和get_user_field? –

+0

检索某些用户数据的Wordpress和S2成员函数。 – user1847323

回答

0

你可以用一个层次结构中的文件扩展或你只需要包括与包括声明该文件。

层次

<?php 

    class ClassA extends ClassB { 


    } 

包括

log.php 
<?php 

$logA = 'mylogA'; 
$logB = 'otherlog'; 

?> 

test.php 
<?php 


include 'log.php'; 

echo "Show my $logA"; 

?> 
+0

林不知道我明白你的意思?使用这个函数的两个地方都包括函数文件:require_once('dd_functions.php'); – user1847323

0

可能因为analyse-email-click-log.txt您的相对路径。

如果你有三个PHP文件这样

/lib.php 
/foo.php 
/sub/bar.php 

writeToLog居住在lib.php,包括从/foo.php/sub/bar.php/lib.php文件。如果您运行/foo.php,它将写入/analyse-email-click-log.txt,但是如果您运行/sub/bar.php它将写入/sub/analyse-email-click-log.txt,它可能受写权限保护。

+0

好主意。但不幸的是,这三个文件都在同一个目录中。 – user1847323

相关问题