Jump to content
  • 0

Не работает php upload в linux


Kypaku
 Share

Question

Добрый день! Столкнулся с проблемой загрузки файлов по ftp в линукс. Нижеприведенный код нормально работает в Win7 но из под Ubuntu - не загружает(хотя никаких ошибок также не выдает)

<?php$file_name = XXX;$ftp_server = XXX;$ftp_port = 21;$ftp_file = XXX;$ftp_user_name = XXX;$ftp_user_pass = XXX;$error_to = 'your@email.net';$ftp = ftp_connect($ftp_server, $ftp_port, 20);$filect=file_get_contents($file_name);if(!strstr($filect, $ftp_user_pass)&&!strstr($filect,$ftp_file)){ftp_login($ftp, $ftp_user_name, $ftp_user_pass);ftp_pasv($ftp, true); // Passive modeif(!ftp_put($ftp, $ftp_file, $file_name, FTP_BINARY)){ mail($error_to, 'FTP-upload error', "There was a problem while uploading {$file_name} to {$ftp_server}.", "From: admin@htmlweb.ru\nContent-Type: text/plain; charset=win-1251");}}ftp_close($ftp);

Где XXX - конфиденциальная информация.

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Warning: file_get_contents(XXX/Applications/Src/cache/index.php): failed to open stream: Permission denied in /var/www/ferz2/upload.php on line 13

Warning: ftp_put(XXX/Applications/Src/cache/index.php): failed to open stream: Permission denied in /var/www/ferz2/upload.php on line 17

Так пишет что прав у вас нету.

Link to comment
Share on other sites

  • 0
в настройках файла - чтение и запись  +выполнения файла как программы(upload.php)

Эти настройки прописываются для: владельца, группы и остальных.

 

Если нет возможности посмотреть под кем запускается php, это можно узнать создав из под пхп файл и посмотреть его владельца и группу. Узнав под кем работает пхп, смотрите права на интересующий файл.

 

Примерно так:

error_reporting(-1);ini_set('display_errors', 'on');$fh = fopen('test', 'w+');fclose($fh);print_r(stat('test'));print_r(stat('XXX/Applications/Src/cache/index.php'));

Еще можно проверить доступ на чтение http://php.net/manual/en/function.is-readable.php

Edited by CoDy
Link to comment
Share on other sites

  • 0

 

в настройках файла - чтение и запись  +выполнения файла как программы(upload.php)

Эти настройки прописываются для: владельца, группы и остальных.

 

Если нет возможности посмотреть под кем запускается php, это можно узнать создав из под пхп файл и посмотреть его владельца и группу. Узнав под кем работает пхп, смотрите права на интересующий файл.

 

Примерно так:

error_reporting(-1);ini_set('display_errors', 'on');$fh = fopen('test', 'w+');fclose($fh);print_r(stat('test'));print_r(stat('XXX/Applications/Src/cache/index.php'));

Еще можно проверить доступ на чтение http://php.net/manual/en/function.is-readable.php

 

Warning: stat(): stat failed for XXX/Applications/Src/cache/index.php in /var/www/ferz2/upload.php on line 11

The file is not readable - вернула функция is_readable

Link to comment
Share on other sites

  • 0
Похоже у php нету доступа. Как его изменить?

 

Ознакомьтесь с системой разделения прав доступа в linux.

 

Изменить права доступа к файлу может только владелец или суперпользователь.

 

Если работаете с хостингом, тогда можно попробовать в панели администрирования хостинга найти менеджер файлов и через него выставить на файл права 777. 

Link to comment
Share on other sites

  • 0

 

Похоже у php нету доступа. Как его изменить?

 

Ознакомьтесь с системой разделения прав доступа в linux.

 

Изменить права доступа к файлу может только владелец или суперпользователь.

 

Если работаете с хостингом, тогда можно попробовать в панели администрирования хостинга найти менеджер файлов и через него выставить на файл права 777. 

 

я знаю как изменить права - но права чего. права на файл уже изменены. я (и другие программы) могут его изменять - а php видимо нет. Работаю у себя на сервере.

Link to comment
Share on other sites

  • 0
  • 0

Вот что нашел по Apache.

 

Все скрипты запускаются с правами, с которыми работает web-сервер, тем самым, если есть необходимость записи в какую либо директорию – права доступа необходимо дать на нее всем.

 

 

/home/www/site1.com — должен иметь полный доступ пользователь user1 и www-data;

Как это сделать подскажите пожалуйста. 

Link to comment
Share on other sites

  • 0

Первое - нужно определить под кем работает Apach (при условии, конечно, что php работает как модуль).

Для этого в терминале выполнить:

ps -AF | grep -e "apache"

Результат примерно следующий:

jhvtqN.png

www-data - это пользователь под которым работают рабочие процессы апача (под рутом работает диспетчер - он не нужет).

 

Далее, чтобы дать доступ этому юзеру к файлу или каталогу, можно пойти несколькими путями.

 

Изменить владельца файла/каталога на пользователя апача, в моем случае на www-data:

chown -R www-data /var/www/site.com

Открыть всем (и www-data в частности) доступ к файлу/каталогу:

chmod -R 777 /var/www/site.com
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy