Если вам абсолютно нужна локальная копия файла, вам нужно будет открыть InputStream
копию содержимого в локальный файл, в котором вы знаете путь, а затем перейти оттуда. Sidenote: Guava ByteStreams#copy
- это простой способ выполнить это.
Конечно, этот файл больше не поддерживается исходным источником Uri, поэтому я не думаю, что это то, что вы хотите. Вместо этого вы должны работать с API-интерфейсом Uri. Взгляните на Storage Access Framework
Изменить
Вот как вы можете получить InputStream
из вашего Uri
InputStream inputStream = getContentResolver().openInputStream(uri);
В конце концов, для меня это было то, что я создал таблицу в своей базе данных, но в ней не было данных.
Чтобы CakePHP мог распознавать соединение MySql, должна быть таблица с данными в нем.
Если вы используете Godaddy (или любой другой общий хостинг в этом отношении), они могут ограничивать исходящие соединения только для портов 80 и 443.
Альтернативой unix_socket
(особенно для людей OS X) является замена localhost
на 127.0.0.1
: «115]
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => '127.0.0.1',
'login' => 'user',
'password' => 'password',
'database' => 'database-name',
'prefix' => '',
'encoding' => 'utf8',
);
Я заметил, что вы спрашивали об этом год назад, и, скорее всего, уже решили бы это. Тем не менее, для тех, кто сталкивается с теми же проблемами при попытке установить CakePHP на XAMPP, все, что вам нужно сделать, это изменить «login» на «root», то есть по умолчанию для входа в XAMPP, и оставить «password» как «», т.е. пустой. Полный код в вашем файле database.php должен выглядеть следующим образом:
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'ckblog',//replace with your own database name
'prefix' => '',
//'encoding' => 'utf8',
);
Вот и все.
Я попытался объединить код из примера 2 из http://php.net/manual/en/pdo.connections.php в /app/View/Pages/home.ctp. Мне пришлось исправить аргументы конструктора PDO и изменить имя таблицы в запросе. Код примера 2 возвратил ошибку «Ошибка !: Не удалось найти драйвер». Основываясь на ответе короля Jk, я пытался изменить php.ini, когда начал задаваться вопросом, где может жить php_pdo_mysql.so. http://php.net/pdo_mysql показал, как он был скомпилирован как часть PHP с помощью параметра --with-pdo-mysql для настройки. Перекомпиляция исправила мою проблему. Примечание. Я работаю в системе Ubuntu 12.10 с PHP 5.5.9 и Apache Webserver 2.4.6
.Вполне возможно, что поддержка MySQL PDO отсутствует.
как root (или используя sudo):
apt-get install php5-mysql
На Mac, используя MAMP в качестве платформы разработки, для тортов правильным решением является решение Domingo Casarrubio.
Добавьте параметр unix_socket
в конфигурации вашей базы данных.
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
Просто для того, чтобы помочь пользователям Ubuntu : у меня была такая же ошибка на моей машине с Ubuntu 13.10, когда новейший xampp был загружен напрямую от apachefriends. Попробовал большую часть материала в каждом посте, который я мог найти об этой ошибке, но не материал, относящийся к mac. В конце концов, исправление оказалось таким же, как и выбранный ответ:
Найдите сокет, который mysqld создает для программ для подключения:
user@host /opt$ find . -name mysql.sock
/opt/lampp/var/mysql/mysql.sock
добавьте его в вашу базу данных cakePHP файл конфигурации (cakePHP) /app/Config/database.php
'unix_socket' => '/opt/lampp/var/mysql/mysql.sock'
Для меня это, наконец, привело к тому, что мои команды для тортов можно было выполнять без ошибки «: подключение к базе данных« Mysql » отсутствует или не может быть создан. ".
В моем случае это было потому, что база данных не существовала. Я ожидал, что запуск ./app/Console/cake schema create
создаст его, но это не так. Создание его с помощью create database <database name>
в mysql помогло (хотя я уже назначил привилегии).
У меня была эта проблема после обновления до OSX Yosemite и вставки следующей строки.
Отредактируйте php.ini
и добавьте:
extension=php_pdo_mysql.dll
Затем перезапустите веб-сервер
У меня была такая же проблема, и в конце концов я обнаружил, что это вызвано тем, что CakePhp не признает, что я использовал пользователя с паролем, даже если этот пользователь был создан в PHPMyAdmin. Мне пришлось использовать пользователя root без пароля.
Я узнал об этом после внесения следующих изменений в файл /lib/Cake/Error/exceptions.php .
Исходная строка:
protected У меня была такая же проблема, и в конце концов я обнаружил, что это вызвано тем, что CakePhp не признает, что я использовал пользователя с паролем, даже если этот пользователь был создан в PHPMyAdmin. Мне пришлось использовать пользователя root без пароля.
Я узнал об этом после внесения следующих изменений в файл /lib/Cake/Error/exceptions.php .
Исходная строка:
[110] заменена на эту:
protected У меня была такая же проблема, и в конце концов я обнаружил, что это вызвано тем, что CakePhp не признает, что я использовал пользователя с паролем, даже если этот пользователь был создан в PHPMyAdmin. Мне пришлось использовать пользователя root без пароля.
Я узнал об этом после внесения следующих изменений в файл /lib/Cake/Error/exceptions.php .
Исходная строка:
[110] заменена на эту:
[111] Это даст вам причину проблемы, чтобы вы могли правильно изменить причину.
messageTemplate = "Database connection \"%s\" is missing, or could not be created:\n %s";
Это даст вам причину проблемы, чтобы вы могли правильно изменить причину.
messageTemplate = 'Database connection "%s" is missing, or could not be created.';
заменена на эту:
protected У меня была такая же проблема, и в конце концов я обнаружил, что это вызвано тем, что CakePhp не признает, что я использовал пользователя с паролем, даже если этот пользователь был создан в PHPMyAdmin. Мне пришлось использовать пользователя root без пароля.
Я узнал об этом после внесения следующих изменений в файл /lib/Cake/Error/exceptions.php .
Исходная строка:
[110] заменена на эту:
[111] Это даст вам причину проблемы, чтобы вы могли правильно изменить причину.
messageTemplate = "Database connection \"%s\" is missing, or could not be created:\n %s";
Это даст вам причину проблемы, чтобы вы могли правильно изменить причину.
Возможно, вам потребуется создать таблицу в вашем php-файле ... Откройте phpMyAdmin и убедитесь, что у них есть CV базы данных.
Это твоя модель. Откройте это, и там должна быть следующая строка
public $useDbConfig = 'local';
Это перезаписывает глобальную конфигурацию & amp; установите его обратно в локальный
Эта ошибка также может быть вызвана тем, что пользователь подключаемой базы данных не имеет надлежащих привилегий. Я считаю, что вам нужно только минимум INSERT, SELECT, UPDATE и DELETE.
Всегда сначала проверяйте имя пользователя / пароль и пользовательские привилегии, поскольку CakePHP, скорее всего, выдаст неопределенную ошибку соединения с базой данных для любого из них.
Попробуйте добавить сокет:
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
Я боролся с этим весь уик-энд и наконец решил это. Оказывается, что php.ini указывает на несуществующий «каталог расширений». Создайте файл phpinfo () и посмотрите значение этого поля:
Я заметил, что в установленной папке mamp php есть папка no-debug-non-zts-20131226 который отличается от значения, показанного в phpinfo (). Я сделал клонирование этой папки и изменил имя на значение phpinfo (). Возможно, вы могли бы изменить файл php.ini, но я не хотел.
Я не знаю, решили ли вы свою проблему, но я публикую это, потому что моя проблема была другой, и Google взял меня сюда, поэтому я надеюсь помочь будущим гуглерам, имеющим аналогичную проблему.
Надеюсь, это поможет.
Потому что в торт-бейке для подключения к базе данных используется сокет unix
, поэтому вам нужно добавить unix_socket для строки подключения.
Вы должны подтвердить местоположение, где хранится mysql.sock в WAS
Пример: в моем случае я использую xampp на MACOS 10.11
(редактировать файл Config / database.php)
public $default = array(
‘datasource’ => ‘Database/Mysql’,
‘persistent’ => false,
‘host’ => ‘localhost’,
‘login’ => ‘root’,
‘password’ => ‘root’,
‘database’ => ‘cakephp’,
‘encoding’ => ‘utf8’,
‘unix_socket’ => ‘/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock’
);
Наконец, это работа для меня!