2011-08-29 4 views
0

Все.PHP не способен найти файл, хотя он существует

Я использую image resizer script, который изменяет размер изображений в формате JPG. Он отлично работал на моем удаленном сервере, но, к сожалению, он не работает на сервере клиента. : - |

Каталоги доступны для записи (разрешение установлено на 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 должен иметь доступ ко всем каталогам, ведущим к файлу, а не к самому доступу к самому файлу. Если у него нет разрешений на ВСЕХ каталогов, это равноценно поставить «Бесплатно! Возьмите один!». диспенсер для памфлетов внутри хранилища в Форт-Ноксе - бесполезен.

+0

Означает ли это, что пользователь root должен изменять разрешения? Если да, то в чем он должен быть установлен? – abhisek

+1

Возможно, зависит от владения каталогами. гарантирует, что вы сможете изменить perms. –

+0

Спасибо! Это сработало! – abhisek

Смежные вопросы