2013-05-09 122 views
0

我跟着this question中的选定答案,我试图将某个变量的内存中的内容导出为.php文件。然后,我稍后require_once制作的php文件。即使写入权限存在,文件也没有被创建

问题是php文件永远不会被制作。所以当我尝试要求它的时候,我得到一个错误(HTTP 500,因为代码依赖于这个变量,并且因为这个文件不存在)。

错误日志说该文件不能被要求,因为没有这样的文件或目录。

我试图使文件中的目录有755个权限。

这里是我使用的变量导出到文件的代码:

$variable_export = var_export($elasticaObject, true); 
$variable = "<?php\n\n\$$elasticaObject = $variable_export;\n\n?>"; 
file_put_contents('theIndex.php', $variable); 

任何想法,我做错了,为什么文件theIndex.php没有被提出?

+0

什么是从'file_put_contents'的返回值? – andrewsi 2013-05-09 14:44:04

+0

'theIndex.php'已经存在? dir可能是755,但是如果这个.dex.php已经存在并且被其他用户所拥有,那么你仍然不能覆盖它。 – 2013-05-09 14:44:59

+0

@andrewsi如何从file_put_contents获取返回值? – IMUXIxD 2013-05-09 14:47:16

回答

0

您的模式可能不足。

755 = RWX(所有者),RW(组和其他人)。

组和其他人可能只是阅读和跨文件夹。

如果启动PHP的用户不是该文件夹的所有者,则可能会出现问题。

尝试一个chown用户:在该文件夹中的组,因此你的php用户(可能是你的web服务器)可以写入它。

干杯,

K.

+0

我该如何做一个chown用户:group。你可以更新你的答案,解释如何。 – IMUXIxD 2013-05-09 14:48:59

+0

假设你的目录是“/ home/koreth/test”:'chown www-data:www-data/home/koreth/test'。 www-data是Debian上Apache的默认用户,对于其他发行版应该是别的。 – Koreth 2013-05-09 14:54:03

+0

我没有使用apache,我使用lightpd。但我正在使用debian。 – IMUXIxD 2013-05-09 14:56:25

相关问题