我正在尝试在php中的public_html之外创建一个文件:
fopen("/home/sites/foo.org/backup-ticketing/asu.sql";w)
但是我收到此错误消息。我相信我应该能够以某种方式做到这一点我无法理解。该文件夹的权限为711
。
[Wed Aug 01 14:33:54 2012] [错误] [客户端84.3.2.16] PHP警告: fopen(/home/sites/foo.org/backup-ticketing/asu.sql)[function.fopen]:无法打开流: 不允许进行操作 第4行/home/sites/foo.org/public_html/back/asu.php
你能告诉我什么是正确的做法吗?
感谢您提出的许多建议,我还有其他信息:
php.ini是public_html中的问题但是我想保留它,但/ back /文件夹应该可以这样做。
这是我的设置:
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 :(得分:3)
似乎PHP的Safe mode
或open_basedir已启用,阻止您执行任何操作 - 因此根本不允许这样做,因此无法实现。
您可以检查是否允许您写入公共目录之外的其他目录,通常../tmp
或../temp
是可写的。
您可以通过
找出open_basedir允许的路径echo ini_get('open_basedir');
解决您的问题的另一种方法:将您的文件放在公共目录的子目录中,并使用.htaccess(用户/密码,拒绝所有IP,但您的等等)保护它。
编辑:
仅允许从某些IP访问:创建文件并使用以下内容将其命名为.htaccess
order deny,allow
deny from all
allow from 888.888.888.888
答案 1 :(得分:0)
答案 2 :(得分:0)
经过研究,我找到了明显的答案: open_basedir =无 在php.ini中 我虽然有人会觉得有用。
感谢所有答案,我从他们那里学到了很多东西。