質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2721閲覧

レンタルサーバーにphpを使用してテキストファイルをアップしたいのですが失敗します。

t33

総合スコア33

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/12/31 08:54

編集2017/12/31 08:55

failed to open stream: HTTP wrapper does not support writeable connections
というエラーが出てしまいアップ出来ません。
(phpのmove_uploaded_file()にて上記のエラーが出てしまいます。)

本当に困っている為お教え頂けないでしょうか。
何卒よろしくお願い致します。

【試したこと】
・パーミッションは777です。
・レンタルサーバーのphp.iniの設定も問題ないと思われます。

HTML

1<!doctype html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>アップロード</title> 6</head> 7 8<body> 9 10 <!--formのenctypeに"multipart/form-data"を設定する--> 11 <form action="upload_test.php" method="post" enctype="multipart/form-data"> 12 13 <!--MAX_FILE_SIZE でファイルサイズを制限する--> 14 <input type="hidden" name="MAX_FILE_SIZE" value="100000"> 15 16 <!--input typeは"file"を設定する--> 17 <input type="file" name="upload"> 18 19 <input type="submit" value="アップロード"> 20 </form> 21 22</body> 23</html>

PHP

1<?php 2// ファイルの保存先 3//$uploadfile = '/var/www/files/memo.txt'; 4$uploadfile = 'http://MyLink/upload_test'; 5 6// ①POSTリクエストによるページ遷移かチェック 7if ($_SERVER['REQUEST_METHOD'] === 'POST') { 8 9 // ②エラーコード2だった場合(HTMLのファイル制限超過) 10 if ($_FILES['upload']['error'] === 2) { 11 echo 'ファイルサイズを小さくしてください!'; 12 13 // ③サイズが0だった場合(ファイルが空) 14 } elseif ($_FILES['upload']['size'] === 0) { 15 echo 'ファイルを選択してください!'; 16 17 // ④テキストファイルじゃなかった場合 18 } elseif ($_FILES['upload']['type'] !== 'text/plain') { 19 echo 'テキストファイルを選択してください!'; 20 21 // アップロードが成功した場合 22 } elseif ($_FILES['upload']['error'] === 0) { 23 // アップロードされたファイルに、パスとファイル名を設定して保存 24 move_uploaded_file($_FILES['upload']['tmp_name'], $uploadfile);//ここでエラーが出ます。 25 // 完了メッセージを表示 26 echo '完了!'; 27 28 // 上記以外の場合 29 } else { 30 echo 'アップロードに失敗しました!'; 31 } 32// POSTリクエストによる遷移じゃない場合 33} else { 34 echo '不正なアクセスです!'; 35} 36 37?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下が問題です。

PHP

1$uploadfile = 'http://MyLink/upload_test';

ここはURLではなく、ファイル名(パス名)を書いてください。

・パーミッションは777です。

これはレンタルサーバーの場合危険すぎるので、600(Apacheから直接読み込みする必要が無い場合)604(書き込んだファイルをApacheで読ませる場合)等を指定して下さい。

投稿2017/12/31 09:43

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t33

2017/12/31 10:53

初心的な質問をしてしまい申し訳ありません。 レンタルサーバーの「upload_test」フォルダにテキストファイルをアップしたいのですが、 どのように記述すればいいのか分かりません。 こちらを試したのですがダメでした。 $uploadfile = '/home/testac/testac.minibird.jp/upload_test'; FFFTPにて表示されているパスも試しましたがこちらもエラーが出てしまいました。 $uploadfile = 'testac.minibird.jp/upload_test';
ockeghem

2018/01/01 02:09

その場合のエラーメッセージは変化しませんか?
t33

2018/01/01 07:49

色々試した結果フルパスで入れるとエラー内容が変化致しました。 現在2つエラーが出ています。 Warning: move_uploaded_file(): The second argument to copy() function cannot be a directory in /home/xxxxx/yyyyy/public_html/upload_test.php on line 28 Warning: move_uploaded_file(): Unable to move '/tmp/phpmvA57D' to '/home/xxxxx/yyyyy/public_html/upload_test' in /home/xxxxx/yyyyy/public_html/upload_test.php on line 28 完了! 2つ目のエラーでtmpフォルダと出ているのですが、レンタルサーバーにはtmpフォルダは現在ありません。
ockeghem

2018/01/01 08:29

このエラーメッセージは、move_uploaded_file() 関数の第2引数は、ディレクトリ(フォルダ)名ではだめで、ファイル名でなければならないという意味ですね。
t33

2018/01/01 08:41

ockeghemさんのおかげでようやくアップロード出来ました、本当にありがとうございます!!! 1週間近く色々な方法を試していて本当に困っていた為、感謝してもしきれません! ようやく2018年を迎えられそうです。本当にありがとうございました! 以下のようにしたところきちんとアップロード出来ました。 $uploadfile = '/home/xxxxx/yyyyy/public_html/upload_test/test.txt';
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問