Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / file_put_contents - Permission denied на Mac OS / 6 сообщений из 6, страница 1 из 1
02.10.2013, 02:15
    #38413757
Random2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
file_put_contents - Permission denied на Mac OS
Есть класс для работы с Ini-файлами на php. Под Windows/Linux проблем нет - все работает отлично. Потребовалось запустить скрипт по Mac OS (XAMPP). Все бы хорошо, но при выполнении file_put_contents получаю ошибку:
file_put_contents(config.ini) [function.file-put-contents]: failed to open stream: Permission denied

Перепробовал все возможные варианты - установка прав 777 на папку из под терминала, установка прав на папку и подпапки, путь к папке проверял - все в порядке.

Но заметил интересную закономерность. Создал файл test.php, в него вписал file_put_contents(..., ...); - Отрабатывает без всяких проблем. Как только в этот же файл вставляю код класса и использую этот класс, то сразу же получаю ошибку на file_put_contents. Что-то я никак не могу понять, при чем тут класс? Объясните пожалуйста, знающие люди.
...
Рейтинг: 0 / 0
02.10.2013, 13:51
    #38414247
sxq
sxq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
file_put_contents - Permission denied на Mac OS
приведите фрагмент кода с распечаткой того, что передается в file_put_contents
...
Рейтинг: 0 / 0
02.10.2013, 16:35
    #38414601
Random2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
file_put_contents - Permission denied на Mac OS
sxq, Вот код класса и внизу моих 3 строчки:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
<?php
	if (!defined('_BR_'))
	   define('_BR_',chr(13).chr(10));
	class TIniFileEx {
		public $filename;
		public $arr;
		function __construct($file = false){
			if ($file)
				$this->loadFromFile($file);
		}
		function initArray(){
			$this->arr = parse_ini_file($this->filename, true);
		}
		function loadFromFile($file){
			$result = true;
			$this->filename = $file;
			if (file_exists($file) && is_readable($file)){
				$this->initArray();
			}
			else
				$result = false;
			return $result;
		}
		function read($section, $key, $def = ''){
			if (isset($this->arr[$section][$key])){
				return $this->arr[$section][$key];
			} else
				return $def;
		}
		function write($section, $key, $value){
			if (is_bool($value))
				$value = $value ? 1 : 0;
			$this->arr[$section][$key] = $value;
		}
		function eraseSection($section){
			if (isset($this->arr[$section]))
				unset($this->arr[$section]);
		}
		function deleteKey($section, $key){
			if (isset($this->arr[$section][$key]))
				unset($this->arr[$section][$key]);
		}
		function readSections(&$array){
			$array = array_keys($this->arr);
			return $array;
		}
		function readKeys($section, &$array){
			if (isset($this->arr[$section])){
				$array = array_keys($this->arr[$section]);
				return $array;
			}
			return array();
		}
		function updateFile(){
			$result = '';
			foreach ($this->arr as $sname=>$section){
				$result .= '[' . $sname . ']' . _BR_;
				foreach ($section as $key=>$value){
					$result .= $key .'='.$value . _BR_;
				}
				$result .= _BR_;
			}
				$filename_temp = 'test2.ini';
				file_put_contents($filename_temp, $result);

		}
		function __destruct(){
			$this->updateFile();
		}
	}


	$ini = new TIniFileEx("test.ini");
	$ini->Write('test','message','text');
	$ini->UpdateFile();
?>
...
Рейтинг: 0 / 0
02.10.2013, 16:38
    #38414608
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
file_put_contents - Permission denied на Mac OS
Попробуйте указать полное имя файла, от корня ФС.
...
Рейтинг: 0 / 0
03.10.2013, 08:48
    #38415017
sxq
sxq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
file_put_contents - Permission denied на Mac OS
работает ли PHP в защищенном режиме (safe_mode)?
ну и проверьте файлы/папки на предмет доступа (например, сам исполняемый файл) http://www.php.net/manual/ru/function.fileperms.php + доступ папок по пути к создаваемому файлу
...
Рейтинг: 0 / 0
04.10.2013, 01:54
    #38416250
Random2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
file_put_contents - Permission denied на Mac OS
vkle,

Спасибо огромное!!! Проблема действительно была именно в этом.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / file_put_contents - Permission denied на Mac OS / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]