我已经在这里探索并从相关论坛中获取了一些提示,但我仍然无法解决我的问题,所以我发帖帮助我。谢谢大家。
我已经共享了linux托管,最近他们提供了升级,我接受了。不幸的是,他们声称我的php应用程序应该很好地调整到PHP版本5.3。我的这个应用程序在早期的服务器上工作得很好,这是php 5.2版本。当我尝试注册登录或注销历史记录或任何此类文件写入时,问题是文件权限被拒绝错误。我突出显示了以下代码,因为它是第一个遇到样本的错误。这是我的示例代码。
我特意使用file_put_contents和file_read_contents。以下是我的示例代码。
// define('DATA_PATH_MEMB', dirname( __FILE__) ."/../docs/vendor/"."data/_memdata/");
// above constant is an include file
function updateLogins() {
$user = $_SESSION['thisuserName'];
$filejsonread = DATA_PATH_MEMB.$user.".dat";
$filejsonwrite = DATA_PATH_MEMB.$user.".dat";
$updateDataArr = json_decode(file_get_contents($filejsonread),true);
$timenow = array( "datetimestamp" => date("d-m-Y h:i") );
array_push($updateDataArr["useracess"][0]["history"]["logins"], $timenow);
array_push($updateDataArr["useracess"][0]["history"]["logouts"], $timenow);
file_put_contents($filejsonwrite, json_encode($updateDataArr), LOCK_EX);
}
我得到以下错误,指出file_put_contents为
file_put_contents(/ home / mydomain / public_html / includes /../ docs / gbo / data / _memdata / someusr.dat)[function.file-put-contents]:无法打开流:权限被拒绝
我问他们我的用户帐户是否属于使用写入权限分配文件的组。我的目录是755,我的文件是644,在早期的服务器中,我的应用程序工作的所有诚意。如果不能写入任何文件,我不知道该怎么做。
我试过这个
echo exec('whomai'); // it displays nobody
我是程序员而非管理员。我该怎么问他们或纠正自己。
答案 0 :(得分:0)
文件有,
-rw-r--r-- (644) — Only the owner has read and write permissions; the group and others can read only.
此权限状态表示文件的所有者具有写入权限,但不具有其他任何人。尝试写入此文件的PHP文件作为与用户名不同的用户运行。
因此错误,Apache无法在此文件上写入。但是,如果您ssh
到您的服务器并vi -file
。您将能够毫无问题地编写该文件。
解决方案:
授予Apache对此文件的写入权限。 chown
此文件并授予Apache所有权。
答案 1 :(得分:0)
如果您将强制设置为有效,则可能会出现问题。
尝试(在您的Linux shell上): [root @ * ] #setenforce 0
为我解决了。