fopen работает в обычном PHP, но не внутри Drupal - PullRequest
2 голосов
/ 21 июля 2011

Некоторый PHP-код работал хорошо.Однако, когда я портирую код в модуль Drupal, $fp = fopen( 'language/unicode-big5.tab', 'r' ); не работает должным образом, выдавая предупреждение:

warning: fopen(language/unicode-big5.tab) [function.fopen]: failed to open stream: No such file or directory in /Users/me/Documents/Html/drupal/sites/all/modules/test_module/language.inc.php on line 197.

Я попытался поместить необходимые файлы и папку в sites/default/files:

$fp = fopen( file_directory_path().'/language/unicode-big5.tab', 'r' );

возвращает то же предупреждение.

Как я могу это исправить?

Ответы [ 4 ]

2 голосов
/ 21 июля 2011

Лучше использовать путь модуля, следуя стандартам drupal, и добавить его к пути файла:

drupal_get_path('module', $module_name);

2 голосов
/ 21 июля 2011

Это будет прекрасно работать.

Однако в сообщении просто говорится, что ваш путь неверен, вы пробовали просто посмотреть, какой путь он пытается открыть?

Просто выполнитеи исправьте путь соответствующим образом.

echo realpath(file_directory_path() . '/language/unicode-big5.tab');

Если путь правильный , то вам нужно проверить права доступа, имеет ли этот пользователь доступ к файлу вообще?Попробуйте chmod 777 и посмотрите, поможет ли это решить проблему, если это так, удалите chmod 777 и исправьте его соответствующим образом (разрешения пользователя / группы).

0 голосов
/ 26 июня 2016

В Drupal 7 и 8 есть drupal_realpath().

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

https://api.drupal.org/api/drupal/includes!file.inc/function/drupal_realpath/7.x

0 голосов
/ 21 июля 2011

Ваш Drupal работает под другим владельцем, чем файл, на который вы ссылаетесь? Является ли файл читаемым? (файл chmod + r)

...