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
Форумы портала PHP.SU :: Версия для печати :: Проблема с открытием файлов
Форумы портала PHP.SU » Серверное администрирование » Apache и другие веб-серверы » Проблема с открытием файлов

Страниц (2): [1] 2 »
 

1. Albertino - 01 Апреля, 2011 - 13:40:18 - перейти к сообщению
Возникла проблема, не могу с помощью фукции fopen() открыть текстовый файл, файл точно существует. Есть подозрения что гдето в конфигах Apache или PHP стоит запрет на открытие файла в PHP, те разрешено открывать только из определенных директорий.
Правильные ли у меня подозрения и как это исправить?
Если нужны какие-то конфигурационные файлы, то скажите какие.
2. Мелкий - 01 Апреля, 2011 - 14:17:07 - перейти к сообщению
0) включите вывод ошибок
1) на что жалуется?
2) что сам fopen возвращает?
3. Albertino - 01 Апреля, 2011 - 14:26:29 - перейти к сообщению
Мелкий пишет:
0) включите вывод ошибок
1) на что жалуется?
2) что сам fopen возвращает?

А где включается вывод ошибок и как посмотреть что возвращаает сам fopen?
4. DeepVarvar - 01 Апреля, 2011 - 14:27:25 - перейти к сообщению
В самом начале скрипта пишем:
5. Albertino - 01 Апреля, 2011 - 14:42:20 - перейти к сообщению
DeepVarvar пишет:
В самом начале скрипта пишем:

прописал эту функцию никаких ошибок не выводит, в логах пишет следующее
CODE (htmlphp):
скопировать код в буфер обмена
  1.  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
6. OrmaJever - 01 Апреля, 2011 - 15:17:41 - перейти к сообщению
Albertino пишет:
прописал эту функцию никаких ошибок не выводит, в логах пишет следующее

параметр в php.ini display_errors должен быть On.
Покажите 40 строку из этого файла.
7. Viper - 01 Апреля, 2011 - 15:19:15 - перейти к сообщению
Albertino собстно оно ошибку вам и выдало.
fopen находится в disabled_functions. Эт в конфиге PHP ищите.
8. Albertino - 01 Апреля, 2011 - 15:50:36 - перейти к сообщению
40 и 41 строка скрипта
PHP:
скопировать код в буфер обмена
  1.  
  2. if (file_exists(LOG_FILE)) echo 'file exists<br>'; else echo "NO FILE<br>";
  3. $f = fopen( LOG_FILE, "rt", true) or die( "Error opening file " . LOG_FILE );
  4.  

вроде проверял 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
9. JustUserR - 02 Апреля, 2011 - 21:23:56 - перейти к сообщению
Albertino пишет:
Operation not permitted in D:\web\check_emails\check_emails.php on line 40
В качестве возможной причины осуществления некорректного функционирования предполагаемого PHP-приложения, допустимо рассмотрение локального ассоциированного уровня внешних привелений функционирующей программной соствояющей элементов, поддержание исполняемого потока которойпроизводится на основании CGI-совместимого интерфейса во вложенной дифференциированной группе сопоставленных процессов; в качестве допустимого варианта осуществления решения поставленной задачи, допустимо использования средств suexec или suphp соответственно
10. Albertino - 04 Апреля, 2011 - 08:32:08 - перейти к сообщению
Viper пишет:
Albertino собстно оно ошибку вам и выдало.
fopen находится в disabled_functions. Эт в конфиге PHP ищите.

В disabled_functions fopen нету, там есть только popen + те функции что я написал выше. Как сделать чтоб функция заработала, причем из дериктории самого сайта fopen работает, а вот из другой дериктории нет.
11. Viper - 04 Апреля, 2011 - 08:52:55 - перейти к сообщению
Albertino пишет:
Как сделать чтоб функция заработала, причем из дериктории самого сайта fopen работает, а вот из другой дериктории нет.
поясните!
12. Albertino - 04 Апреля, 2011 - 09:35:04 - перейти к сообщению
Viper пишет:
Albertino пишет:
Как сделать чтоб функция заработала, причем из дериктории самого сайта fopen работает, а вот из другой дериктории нет.
поясните!

ну тоесть если я использую функцию fopen для файлов находящихся в одной дериктории (дериктории сайта), например, рабочая директория сайта D:\web\ , то fopen файлы из этой директории открывает, а файлы из С:\E4\ нет
13. Viper - 04 Апреля, 2011 - 09:41:28 - перейти к сообщению
Albertino и не будет. У апача нет туда доступа. Если вам нужно чтобы так работало то, если не ошибаюсь, надо webDAV.
14. Albertino - 04 Апреля, 2011 - 10:11:56 - перейти к сообщению
А если скрипт запускается через командную строку, те без использования Апача, то по идее webDAV не используется.
Ситуация заключается в следующем: мне надо прочитать логи почтового сервера, раньше сам постовый сервер и сайт распологались на одном диске, те D:\Eserv3\ и D:\web соответственно и все работало(скрипт запускался через рессписание, т.е. как
CODE (text):
скопировать код в буфер обмена
  1. D:\php\php.exe d:\web\check_mails.php
)
Но недавно мы сделали перустановку сервера и теперь почтовый сервер распологается на С диске.(пути к новым логам прописаны правильно, webDAV как модуля к апачу раньше не стояло), а может ли блокировка функции popen() блокировать fopen?
15. Viper - 04 Апреля, 2011 - 10:30:47 - перейти к сообщению
Albertino пишет:
а может ли блокировка функции popen() блокировать fopen
незнаю. попробуйте удалить её из списка disabled_functions.

Дело в том что Апач по умолчанию не имеет доступа к ресурсам ФС вне папки htdocs(или заданной в настройках). Можно как вариант создать алиас на необходимую папку и тогда для апача это будет как будто папка в пределах Document root.

И да. Если скрипт запускается через консоль то апач при это ситуация другая. Если вы пытаетесь выполнить к примеру php /var/webstorage/index.php то будет выполнено из указанного пути. Если же выполнить этот же скрипт из Document root (при Document root = к примеру /var/www/) то произойдет ошибка.

 

Powered by ExBB FM 1.0 RC1