我是PHP新手,但习惯了Java。我有一个文件,dd-functions.php,其中包含一个函数(writeToLog)。此函数将使用log语句创建一个变量,然后将其写入文件。
奇怪的是,当从一个php文件(file1.php)调用它时,它可以完美地工作,但当从另一个php文件(file2.php)调用时,它不会向文件写入任何内容。在file1.php和file2.php中,functions.php都包含一次。
这怎么可能呢?
功能.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);
}
您可以用层次结构扩展文件,或者只需要用include语句包含此文件。
层次结构
<?php
class ClassA extends ClassB {
}
包括
log.php
<?php
$logA = 'mylogA';
$logB = 'otherlog';
?>
test.php
<?php
include 'log.php';
echo "Show my $logA";
?>
这可能是,因为您到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
。