file_put_contents不是在一个地方工作,而是在代码的其他地方工作


file_put_contents not working one place, but working elsewhere in code

我是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