Php файл не запускается а скачивается
Я попытался написать код для загрузки файла в папку «media» в PHP. Почему-то продолжает не работать.
Вот код выполнения:
Вот мой код формы:
Есть идеи, почему он может не работать?
Когда я использую команду «print_r ($ _ FILES);», она отображает:
Array ([file] => Array ([name] => Снимок экрана 2012-05-29 в 12.36.11 PM.jpg [type] => image / png [tmp_name] => / Applications / MAMP / tmp / php / phpHNj3nW [error] => 0 [size] => 71640))
Изображение НЕ загружено в папку.
Чтобы проверить, успешно ли обновлены файлы после отправки формы. используйте print_r, чтобы увидеть результаты.
print_r($_FILES);
Убедитесь, что в вашей форме .. вы указали enctype.
У меня была такая же проблема. Я использую ubuntu 18.04, и это было решено, когда я использовал эту команду разрешения на терминале. sudo chmod -R 777 / var / www / html / target_dir . -> У меня есть веб-сервер apache2 и target_dir в качестве Download, поэтому замените target_dir в соответствии с вашим целевым каталогом.
Вы проверили, есть ли у "пользователя веб-сервера" права на запись в "../media"?
В теге формы вы хотите что-то вроде этого Убедитесь, что для enctype установлено значение multipart / form-data для файлов. Замените uploader.php именем файла php, выполняющего обработку. Также убедитесь, что ваши разрешения установлены, чтобы файл можно было создать в каталоге.
Есть форма с типом шифрования или вызовом ajax? Вы проверяете, отправлен ли файл в сценарий загрузки (с print_r($_FILES["file"] ). Если верно, нужно ли вам проверить правильность относительного пути? Вы должны начать с текущего сценария (если файл включен, вы должны начать с включающего сценария). Извините, если ответ кажется простым, но опубликованный код слишком короток для оценки.
Проверьте в файле php.ini max_execution_time тяжелые изображения не загружаются из-за времени выполнения ..
Поместите подпись в форму
Зарегистрируйте файл php.ini max_execution_time тяжелые изображения не загружаются из-за времени выполнения ..
Убедитесь, что папка media имеет права доступа 777 и путь ../media/ правильный
Достаточно часто у начинающих разработчиков встречаются проблемы с запуском PHP-кода. Симптомы и причины могут быть самые разнообразные. Ниже приведены наиболее часто встречающиеся симптомы и их возможные причины.
Вы открыли страницу/файл в браузере и увидели на странице PHP-код. Возможно, вперемешку с другими элементами страницы.
Либо вместо страницы файл "скачался", а в нём Вы увидели исходный код PHP.
Для начала попробуйте выполнить тестовый скрипт. Сохраните в отдельный файл test.php следующий код (только этот код и ничего больше):
-
Возможно, при выполнении Вашего PHP кода произошла критическая ошибка. Если отключена директива display_errors, то белая страница - реакция сервера на критическую ошибку.
Если так, то для начала Вам необходимо узнать, какая именно произошла ошибка.
-
Попробуйте добавить в самое начало кода следующие строки:
Код не выполняется / не работает / выводится в браузер / пустая белая страница
php Я установил apache2 и php Написал скрипт он выводился как код, прописал sudo find.
PHP Код из Бд ( sqlite3) выводится в браузер, а не выполняется
Собственно, проблема в том, что код при подстановке из бд в файл не выполняется, а только.
Не работает редактор - взамен только пустая белая страница
При попытке редактирования материала на сайте, или при попытке создать новый материал через.
дополню предыдущий пост - ошибки могут все равно не отображаться, если там стоит другой владелец, необходимо сначала изменить самого владельца и уже затем изменить права на папку/файл
Можно рекурсивно обойти всю папку и сразу задать всем владельца/права доступа, чтобы не прописывать для каждого файла
такие команды применят смену владельца и прав на доступ к папке и всем вложенным файлам
P.S. пояснения
-R - рекурсивный обход
USER - пользователь, на которого вы хотите сменить владельца (к примеру administrator, www-data, root)
path/to/dir - путь к директории
755 - права на доступ на чтение и запись
а "смена прав на доступ ВСЕГО, что в папке".
во вторых, в цифре 755 перовая цифра - права владельца, вторая цифра - права группы, к которой принадлежит владелец, и третья - права "других". при этом цифра является простой суммой из трех чисел:
4 - разрешено читать
2 - разрешено писать
1 - разрешено выполнять.
то есть, давая 4, разрешаем читать. хотим разрешить еще и писать - добавляем двоечку и получаем 6, а хотим разрешить исполнять - добавляем еще единичку и получаем 7.
таким образом - 755 это "владельцу можно все, группе можно читать и исполнять, и ЧУЖИМ (точнее, всем остальным) тоже можно читать и исполнять". В таком случае возни кает резонный вопрос - а на кой вообще всему этому еще и владельца назначать? Если ИТАК можно всем кому ни попадя читать и выполнять!?
Да и вообще, в свете "во первых" - а на кой самим файлам php бит исполнения? То есть, им права 7 - не нужны! Отнимаем единичку, осталось 6. Да и права на запись - зачем? Чтоб апач мог перезаписывать сам файлы php? Это действительно то, что нужно? Или же права на запись тоже долой? Отнимаем двоечку, осталось 4. В итоге - апач читать файлы сможет, а ни писать в них (в сам php файл), ни исполнять их - не сможет. Но и не надо ему это!
Посему на файлы (именно на файлы) - с головой достаточно прав 400
А вот на директории, увы, нужен бит исполнения, иначе в них войти будет невозможно. Но опять же - (как было в кино - "достаточно одной таблэтки!") - только владельцу! А остальным - "накося выкуси"!
То есть, на директории - права 500
Ну а теперь, "потанцуем", чтоб не вручную, а одним махом (ну, "двумя махами"):
Скачивается исходный текст или "файл с мусором"?
Если выполнить простейший скрипт вида то тоже не работает?
Если скачивается "файл с мусором", то вероятно "падает" интерпретатор php, покажите что выводит команда php -m , если исходный текст, то возможно апач не перечитал свой конфигурационный файл, попробуйте его перезапустить. Включали php как? В свойствах WWW-домена?
Скачивается чистый файл со всем содержимым.
Тестирую как раз на phpinfo.php.
Модули загружаются следующие:
cgi-fcgi
ctype
curl
date
hash
libxml
mysql
pcre
Reflection
session
SimpleXML
SPL
standard
zlib
Причину обнаружил, правда не пойму, с чем она связана.
Если при создании пользователя и задании домена выставить следующие параметры:
То скрипты не работают
Если же предварительно добавить AddType и оставить
половину от предыдущего объявления:
Настройки виртуалхоста которые делает ISPmanager у вас верные. Вероятно проблема с модулем PHP или с конфигурацией выше. Глобально ничего не надо включать, как вы делаете дальше. Все надо включать внутри виртуалхоста и прописывается автоматически при выборе режима работы PHP в свойствах WWW домена.
Вот я и сам ломаю голову над тем, почему ISP manager всё прописывает правильно внутри хоста, а ничего не срабатывает. Чтобы работало, нужно при создании пользователя и виртуального хоста вообще не выбирать PHP, а AddType подрисовывать глобально руками.
Видимо проблема где-то во внешней конфигурации. Так не хочется время тратить на то, что уже должно быть настроено по умолчанию, блин.
Добрый день , столкнулся с такой же проблемой , все файлы PHP просто скачиваются .
Куда все так смотерть , и что ковырять ?
Или все так же надо руками прописывать ( как выше писали )
При чем на первых двух доменах ( стоит Жумла и еще один движок ) все окей . на 3ем и четвертом домене , начинаются проблемы ! Просто кладу файлик вывести phpinfo а он у меня скачивается !
Скачивается исходный текст или "файл с мусором"?
Если выполнить простейший скрипт вида то тоже не работает?
Если скачивается "файл с мусором", то вероятно "падает" интерпретатор php, покажите что выводит команда php -m , если исходный текст, то возможно апач не перечитал свой конфигурационный файл, попробуйте его перезапустить. Включали php как? В свойствах WWW-домена?
Скачивается чистый файл со всем содержимым.
Тестирую как раз на phpinfo.php.
Модули загружаются следующие:
cgi-fcgi
ctype
curl
date
hash
libxml
mysql
pcre
Reflection
session
SimpleXML
SPL
standard
zlib
Причину обнаружил, правда не пойму, с чем она связана.
Если при создании пользователя и задании домена выставить следующие параметры:
То скрипты не работают
Если же предварительно добавить AddType и оставить
половину от предыдущего объявления:
Настройки виртуалхоста которые делает ISPmanager у вас верные. Вероятно проблема с модулем PHP или с конфигурацией выше. Глобально ничего не надо включать, как вы делаете дальше. Все надо включать внутри виртуалхоста и прописывается автоматически при выборе режима работы PHP в свойствах WWW домена.
Вот я и сам ломаю голову над тем, почему ISP manager всё прописывает правильно внутри хоста, а ничего не срабатывает. Чтобы работало, нужно при создании пользователя и виртуального хоста вообще не выбирать PHP, а AddType подрисовывать глобально руками.
Видимо проблема где-то во внешней конфигурации. Так не хочется время тратить на то, что уже должно быть настроено по умолчанию, блин.
Добрый день , столкнулся с такой же проблемой , все файлы PHP просто скачиваются .
Куда все так смотерть , и что ковырять ?
Или все так же надо руками прописывать ( как выше писали )
При чем на первых двух доменах ( стоит Жумла и еще один движок ) все окей . на 3ем и четвертом домене , начинаются проблемы ! Просто кладу файлик вывести phpinfo а он у меня скачивается !
Ранее у меня был установлен php 5.3.x, но я решил обновить его. Сначала я удалил php 5.3.x, а затем установил php 5.5.1, но после завершения установки apache не проанализировал файлы php, которые он только что загрузил. Я проверял похожие вопросы здесь, в stackoverflow, но пока ни один из них мне не помог.
Буду очень признателен за любую помощь. Спасибо.
У меня есть эти строки в php.conf
apache больше не скачивает файл. Теперь apache показывает исходный код, но не всю его часть. я добавил
Также убедитесь, что ваш модуль php загружен
Когда вы настраиваете апач попытайтесь просмотреть страницу из другого браузера - У меня были дни, когда хром упорно кэширует результат и сохраняет загрузку исходного кода в то время как в другом браузере, это просто прекрасно.
Сегодня я столкнулся с этой проблемой, и ни одно из описанных решений не помогло мне. Итак, вот еще одна возможная причина:
Если у вас есть что-то вроде
в .htaccess файле папки веб-содержимого это может привести к тому, что ваши сценарии PHP перестанут работать. В моем случае сервер не знал x-mapp-php6 тип, поскольку этот .htaccess файл был импортирован с другого веб-хоста при переносе содержимого веб-сайта.
Просто удаление AddHandler строки из .htaccess файла решило это для меня.
У меня была некоторая проблема, но я обнаружил виновный файл .htaccess в домашнем каталоге (один каталог над веб-каталогом «public_html»). Если у кого-то еще есть такая же проблема, поищите .htaccess и в родительских каталогах (каскад настроек).
У меня был файл .htaccess, подобный этому, который я вытащил с сервера веб-хостинга. Это заставляло версию PHP, которая не была установлена на моем локальном компьютере. Таким образом, виртуальный хост неправильно выполнял файл PHP.
Это почти наверняка проблема, если одни сайты работают, а другие - нет. Joomla .htaccess содержал AddHandler, а WordPress - нет.
Это сработало для меня, просто удалил эту строку из моего файла public / .htaccess, и индекс был загружен.
После долгих усилий я наконец решил проблему.
Если вам будет предложено загрузить .php файл вместо его выполнения, то вот идеальное решение: я предполагаю, что вы уже установили PHP5 и по-прежнему получаете эту ошибку.
затем сделайте следующее:
Оказывается, файлы не должны храниться mods-enabled , а должны храниться в mods-available . Затем в моделях с включенными модами должна быть создана символическая ссылка, указывающая на файл, хранящийся в доступных модах.
Сначала удалите оригинал:
Затем создайте символическую ссылку:
Надеюсь, твоя проблема решена.
Взгляните на свои директивы addtype.
Мне кажется, что Apache сообщает браузеру, что он отправляет тип документа application / php для сценариев с расширениями, такими как .php5. Фактически, Apache должен сообщить браузеру, что сценарий выводит текст / html.
Пожалуйста, попробуйте это:
Что касается приведенного выше предложения о том, что вы должны сообщить браузеру, что вы выводите PHP-скрипт: мне это показалось необычной идеей. Я погуглил и обнаружил, что в сети довольно много дискуссий по этому поводу. По-видимому, есть случаи, когда вы можете сказать, что отправляете PHP-скрипт (даже если Apache должен выполнять скрипт и выдавать текст / html), а также есть случаи, когда браузер просто не распознает этот конкретный Mime Тип.
Очистка кеша браузера - всегда хорошая идея.
Это интересно, но в моем случае он просто выводит весь скрипт PHP, на этот раз в формате HTML (а не только в формате ASCII) - бесполезно! Проблема здесь в том, что PHP каким-то образом не запускается правильно или отправляются неправильные заголовки .
Обратите внимание, что последняя директива AddType (закомментированная в приведенном выше примере) заставляет файл .phps хорошо печататься в HTML. Возможно ли, что ваша конфигурация Apache хорошо печатает файлы .php?
Это могло произойти из-за отсутствия модулей, необходимых для вашего php. Предполагая, что у вас установлен php7, выполните поиск доступных модулей php7, используя
Вышеупомянутая команда перечислит все доступные модули PHP7 для установки. Вы можете начать установку таких модулей, как,
У меня такая же проблема. Apache не загружает файлы php с определенного веб-сайта, а просто загружает их. Я прочитал этот пост и ответы, и я увидел, что эта строка находится на последнем месте файла .htaccess:
Я прокомментировал это, и все работает нормально.
У меня раньше была аналогичная проблема после обновления с 5.3 до 5.4. Но моя установка выглядит немного иначе, поскольку я запускаю Debian и использую fcgid для сервера страниц PHP, а не модуль PHP5 apache / cgi. Поэтому после того, как я обновился, он также установил php5_cgi, который столкнулся с моей настройкой fcgid и больше не выполнял файлы PHP.
Мне пришлось отключить модуль Apache и перезапустить Apache
Как только модуль php5_cgi был отключен, fcgid снова смог обслуживать страницы PHP.
Ах да, этот хитрый ублюдок cgi ^^ Моя проблема была решена после обновления php с 5.3 до 5.4 с dotdeb.
У меня были похожие симптомы, еще одно решение: в /etc/apache2/mods-enabled/php5.conf в комментарии был полезный совет, которому я следовал:
Если кто-то использует php7 в среде Linux
Убедитесь, что вы включили php7
Перезапустите службу mysql и Apache
После обновления PHP до версии 7.3 скрипты PHP запускаются с www-данными вместо $ USER, как раньше.
Мне нужно было переустановить и активировать PHP-FPM:
Чтобы убедиться, что с Virtualmin все в порядке , я использовал мастер повторной проверки конфигурации в /virtual-server/check.cgi разделе Vitualmin / System Settings .
После перезапуска Apache моя проблема была решена, надеюсь, это поможет.
Позаботьтесь и о кеше браузера.
Я потратил два дня, отслеживая это, и обнаружил, что помещаю свои PHP-скрипты не в тот каталог.
В моей стандартной установке Ubuntu я помещал скрипты в /var/www . Они должны были быть внутри /var/www/html .
Я только начал работу с PHP, поэтому не знаю, связано ли мое решение с изменением версии, через которое вы прошли.
это решило проблему для меня (у меня установлен php7):
sudo apt-get установить libapache2-mod-php7.0
sudo service apache2 перезапуск
Также возможно, что у вас запущен nginx, но ваш php настроен для работы с apache. Чтобы проверить, запустите service nginx status и service apache2 status посмотрите, какой из них работает. В случае, если nginx запущен, а apache нет, просто запустите, sudo service nginx stop; sudo service apache2 start и ваш сервер теперь будет обслуживать файлы php, как ожидалось.
Вывод
Если бы я закомментировал эти две строки в своих .conf-файлах в /etc/apache2/[[SERVER-NAME].conf -file:
Я понятия не имею, что они делают и как они туда попали, но это есть в каждом из моих .conf файлов. И если я удалю эти строки и обеспечу наличие символической ссылки в /etc/apache2/sites-enabled/ папке , тогда он не загрузит index.php - и все будет работать так, как должно.
Вся история
Читайте также: