2016-05-12 93 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

相關問題