2011-08-29 78 views
0

大家。PHP即使存在也不能找到文件

我正在使用调整JPG图像大小的image resizer script。它工作得很好我的远程服务器,但不幸的是它不能在客户端的服务器上工作。 : - |

这些目录是可写的(权限设置为777)。所有我得到的是:

Error: image does not exist: /home/content/u/s/e/username/correct/path/to/existing/file.jpg 

下面的代码的位可能在调试帮助:

// Images must be local files, so for convenience we strip the domain if it's there 
$image   = preg_replace('/^(s?f|ht)tps?:\/\/[^\/]+/i', '', (string) $_GET['image']); 
// ... 
// Strip the possible trailing slash off the document root 
$docRoot = preg_replace('/\/$/', '', DOCUMENT_ROOT); 
//... 
if (!file_exists($docRoot . $image)) 
{ 
    header('HTTP/1.1 404 Not Found'); 
    echo 'Error: image does not exist: ' . $docRoot . $image; 
    exit(); 
} 

请注意,作为一个开发者,我已经获准访问的子目录根目录。

我希望我能清楚地说明问题。我对背后发生的事情感到不知所措。帮助非常令人惊喜

+0

你的'preg_replace'将会因为一个简单的http请求而失败(你只能匹配安全协议,不知道在这种情况下是否有这个问题。 – Brombomb

+0

@brombomb,谢谢你指出。问题,因为它在我的服务器上没有任何问题 – abhisek

回答

1

PHP必须能够访问文件前的所有目录,而不仅仅是访问文件本身。如果在所有目录中都没有特权,那就等于放了一个“Free!take one!”。在诺克斯堡内的保险库内的小册子分发器 - 毫无用处。

+0

这是否意味着root用户需要更改权限?如果是这样,它应该设置为什么? – abhisek

+1

可能取决于dirs的所有权。保证你能够改变烫发。 –

+0

谢谢!这工作! – abhisek

相关问题