2012-08-01 214 views
3

我想在PHP创建的public_html以外的文件上外的public_html创建文件在PHP中:如何共享主机

fopen("/home/sites/foo.org/backup-ticketing/asu.sql";w)

但是我收到此错误信息。我确信我应该能够做到这一点,我只是无法弄清楚。该文件夹的权限是711

[星期三8月1日14时33分54秒2012] [错误] [客户端84.3.2.16] PHP警告: 的fopen(/home/sites/foo.org/backup-ticketing/asu.sql) function.fopen]:未能打开流: 操作 /home/sites/foo.org/public_html/back/asu.php不允许上线4

可否请你告诉我什么是正确的请问怎么办?

现在谢谢你的意见很多我有一个额外的信息:

php.ini文件中的public_html这个问题,但是我想保持它,因为它只不过是/后退/文件夹应该是能够做到这一点。

这里是我的设置:

file_uploads = Off 
upload_tmp_dir = /var/php_tmp 
upload_max_filesize = 0M 
allow_url_fopen = Off 
allow_url_include = Off 
safe_mode = Off 
display_errors = off 
magic_quotes_gpc = off 
magic_quotes_runtime = off 
max_file_uploads=0 
disable_functions=passthru,exec,phpinfo 
open_basedir = /home/sites/foo.org/public_html/ 
+0

不是一个确切的重复,但这可能有所帮助:http://stackoverflow.com/questions/1202818/php-editing-text-file-above-root – Matt 2012-08-01 14:31:37

+0

该目录的权限是711,但是所有者:目录的组? PHP正在运行的用户(以及任何适用的组)都是什么? – 2012-08-01 14:33:07

+0

对不起,不是太详细,但php.ini导致了问题。 – 2012-08-01 14:47:37

回答

2

它似乎PHP的Safe modeopen_basedir启用阻止你,你想做的事 - 所以它只是不允许的,因此不可能的。

你可以检查,如果你可以写一些其他目录的公共目录之外,往往../tmp../temp是否有可写的。

你也许能够找出通过open_basedir的允许与

echo ini_get('open_basedir'); 

什么路径围绕你的问题的另一种方式:把你的文件放在公共目录的子目录,并与的.htaccess将其固定(用户/密码,拒绝所有IP地址,但你的流量等)

编辑:

  • 通过htacces用户名/密码保护目录:使用htaccess generator,或
  • 只允许来自某些IP地址的访问:创建一个文件,并将其命名为下面

    order deny,allow

    deny from all

    allow from 888.888.888.888

+0

我喜欢htaccess版本,你能提供一些样品吗?谢谢 – 2012-08-01 14:43:27

0

研究,我发现了明显的答案后: 的open_basedir =无 在php.ini 我虽然有人会找到有用的。

感谢所有的答案,我从他们身上学到了很多。