Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Проблема с открытием файлов
Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
Возникла проблема, не могу с помощью фукции fopen() открыть текстовый файл, файл точно существует. Есть подозрения что гдето в конфигах Apache или PHP стоит запрет на открытие файла в PHP, те разрешено открывать только из определенных директорий.
Правильные ли у меня подозрения и как это исправить?
Если нужны какие-то конфигурационные файлы, то скажите какие.
Мелкий
Отправлено: 01 Апреля, 2011 - 14:17:07
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
0) включите вывод ошибок
1) на что жалуется?
2) что сам fopen возвращает?
----- PostgreSQL DBA
Albertino
Отправлено: 01 Апреля, 2011 - 14:26:29
Гость
Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
Мелкий пишет:
0) включите вывод ошибок
1) на что жалуется?
2) что сам fopen возвращает?
А где включается вывод ошибок и как посмотреть что возвращаает сам fopen?
DeepVarvar
Отправлено: 01 Апреля, 2011 - 14:27:25
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
PHP Warning: fopen(C:\E4\DATA\log\SMTP\201103smtpsend.txt) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Operation not permitted in D:\web\check_emails\check_emails.php on line 40
OrmaJever
Отправлено: 01 Апреля, 2011 - 15:17:41
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Albertino пишет:
прописал эту функцию никаких ошибок не выводит, в логах пишет следующее
параметр в php.ini display_errors должен быть On.
Покажите 40 строку из этого файла.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Viper
Отправлено: 01 Апреля, 2011 - 15:19:15
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
Albertino собстно оно ошибку вам и выдало.
fopen находится в disabled_functions. Эт в конфиге PHP ищите.
$f=fopen( LOG_FILE,"rt",true) or die("Error opening file ". LOG_FILE );
вроде проверял disabled_functions там fopen нету есть только exec,passthru,popen,proc_open,shell_exec,system,dl,stream_socket_client,stream_socket_server,
socket_accept,socket_bind,socket_connect,socket_create_listen,socket_create_pair,socket_create,socket_listen,openlog,syslog,apache_get_modules,apache_get_version,apache_getenv,
apache_note,apache_setenv,apache_child_terminate,virtual
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Albertino пишет:
Operation not permitted in D:\web\check_emails\check_emails.php on line 40
В качестве возможной причины осуществления некорректного функционирования предполагаемого PHP-приложения, допустимо рассмотрение локального ассоциированного уровня внешних привелений функционирующей программной соствояющей элементов, поддержание исполняемого потока которойпроизводится на основании CGI-совместимого интерфейса во вложенной дифференциированной группе сопоставленных процессов; в качестве допустимого варианта осуществления решения поставленной задачи, допустимо использования средств suexec или suphp соответственно
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Albertino
Отправлено: 04 Апреля, 2011 - 08:32:08
Гость
Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
Viper пишет:
Albertino собстно оно ошибку вам и выдало.
fopen находится в disabled_functions. Эт в конфиге PHP ищите.
В disabled_functions fopen нету, там есть только popen + те функции что я написал выше. Как сделать чтоб функция заработала, причем из дериктории самого сайта fopen работает, а вот из другой дериктории нет.
Viper
Отправлено: 04 Апреля, 2011 - 08:52:55
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
Albertino пишет:
Как сделать чтоб функция заработала, причем из дериктории самого сайта fopen работает, а вот из другой дериктории нет.
Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
Viper пишет:
Albertino пишет:
Как сделать чтоб функция заработала, причем из дериктории самого сайта fopen работает, а вот из другой дериктории нет.
поясните!
ну тоесть если я использую функцию fopen для файлов находящихся в одной дериктории (дериктории сайта), например, рабочая директория сайта D:\web\ , то fopen файлы из этой директории открывает, а файлы из С:\E4\ нет
Viper
Отправлено: 04 Апреля, 2011 - 09:41:28
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
Albertino и не будет. У апача нет туда доступа. Если вам нужно чтобы так работало то, если не ошибаюсь, надо webDAV.
Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
А если скрипт запускается через командную строку, те без использования Апача, то по идее webDAV не используется.
Ситуация заключается в следующем: мне надо прочитать логи почтового сервера, раньше сам постовый сервер и сайт распологались на одном диске, те D:\Eserv3\ и D:\web соответственно и все работало(скрипт запускался через рессписание, т.е. как
)
Но недавно мы сделали перустановку сервера и теперь почтовый сервер распологается на С диске.(пути к новым логам прописаны правильно, webDAV как модуля к апачу раньше не стояло), а может ли блокировка функции popen() блокировать fopen?
Viper
Отправлено: 04 Апреля, 2011 - 10:30:47
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
Albertino пишет:
а может ли блокировка функции popen() блокировать fopen
незнаю. попробуйте удалить её из списка disabled_functions.
Дело в том что Апач по умолчанию не имеет доступа к ресурсам ФС вне папки htdocs(или заданной в настройках). Можно как вариант создать алиас на необходимую папку и тогда для апача это будет как будто папка в пределах Document root.
И да. Если скрипт запускается через консоль то апач при это ситуация другая. Если вы пытаетесь выполнить к примеру php /var/webstorage/index.php то будет выполнено из указанного пути. Если же выполнить этот же скрипт из Document root (при Document root = к примеру /var/www/) то произойдет ошибка.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.