• 締切済み

Zend Framework アップロード

Zend Frameworkでファイルをデータベースへアップロードをするためのプログラムを作成していますが、うまくいきません。 ファイルをPOSTデータで送ろうとしているのですが、ファイルのアップロード以前にZend_File_Transfer()が使えません。 not foundとなります。require_onceなどで無理やり読み込もうとすると、Fatal error: Uncaught exception~となります。 ファイル名だけであれば、簡単にデータベースに書き込むことができますが、ファイルそのものをアップロードすることはできません。 リクエストから、フォームの「name="~"」の~を読み込むことは出来ますが、$_FILESが存在しないことになっています。「type="file"」としてPOSTデータで送っています。 どなたかご支援ください。 よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

  • shaka001
  • ベストアンサー率60% (23/38)
回答No.2

ソースを見る限りでは、Zend_File_Transferクラスを定義したファイルを読み込んでないように思います。 require_once 'Zend/File/Transfer.php'; を追加してみてください。 少なくとも、Zend_File_Transfer()が使えないということはなくなると思います。

  • shaka001
  • ベストアンサー率60% (23/38)
回答No.1

>not foundとなります。require_onceなどで無理やり読み込もうとすると、Fatal error: Uncaught exception~となります。 require_onceの部分はどのように書いているのでしょう? コードが書いてあると、回答もつきやすくなると思います。

sattooo
質問者

補足

エラーメッセージ---------------------------------------------- Warning: require_once(Zend/Http/Client/Cookie.php) [function.require-once]: failed to open stream: No such file or directory in /virtual/~/application/editor/controllers/WebController.php on line 12 Fatal error: require_once() [function.require]: Failed opening required 'Zend/Http/Client/Cookie.php' (include_path='.:/usr/local/lib/php') in /virtual/~/application/editor/controllers/WebController.php on line 12 ------------------------------------------------------------ コントローラのソース------------------------------------------- 1:<?php 2:require_once APP.'/editor/models/Web.class.php'; 3:require_once 'Zend/Http/Client.php'; 4:require_once 'Zend/Http/Client/Exception.php'; 5:require_once 'Zend/Http/Client/Adapter/Curl.php'; 6:require_once 'Zend/Http/Client/Adapter/Exception.php'; 7:require_once 'Zend/Http/Client/Adapter/Interface.php'; 8:require_once 'Zend/Http/Client/Adapter/Proxy.php'; 9:require_once 'Zend/Http/Client/Adapter/Socket.php'; 10:require_once 'Zend/Http/Client/Adapter/Stream.php'; 11:require_once 'Zend/Http/Client/Adapter/Test.php'; 12:require_once 'Zend/Http/Client/Cookie.php'; 13:require_once 'Zend/Http/Client/CookieJar.php'; 14:require_once 'Zend/Http/Client/Exception.php'; 15:require_once 'Zend/Http/Client/Response.php'; ------------------------------------------------------ require_onceをなくした時のエラーメッセージ----------------------------------- Fatal error: Uncaught exception 'Zend_Controller_Action_Exception' with message 'Action "error" does not exist and was not trapped in __call()' in /virtual/~/public_html/Zend/Controller/Action.php:485 Stack trace: #0 /virtual/~/public_html/Zend/Controller/Action.php(515): Zend_Controller_Action->__call('errorAction', Array) #1 /virtual/~/public_html/Zend/Controller/Dispatcher/Standard.php(289): Zend_Controller_Action->dispatch('errorAction') #2 /virtual/~/public_html/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #3 /virtual/~/public_html/index.php(35): Zend_Controller_Front->dispatch() #4 {main} thrown in /virtual/~/public_html/Zend/Controller/Action.php on line 485 ------------------------------------------------------------------ index.phpの末端部分でエラーが発生しているので、 どこかのソースが間違っているということなんでしょうか?

関連するQ&A

  • zendのcontrollersについて

    Zendを始めたばかりのものです。 サーバ:XPで自営 Apache2,php5 Zendをダウンロードし、Cドライブのルートに「ZendFramework-1.9.0」 という名前で配置しました。 php.iniのinclude_pathの設定も変更し、 htdocsの直下にindex.phpを作成し <?php require_once 'Zend/Version.php'; //ライブラリの読み込み echo Zend_Version::VERSION; //現在のZend Frameworkのバージョンを表示 とすると、正常にバージョンが表示されます。 zendappsというフォルダーをhtdocsの中に作成し、index.phpに <?php require_once 'Zend/Controller/Front.php'; Zend_Controller_Front::run('../zendapps/controllers'); とするとエラーになります。(エラーは長いので後述) '../zendapps/controllers'の部分かとも思いますが、 お分かりになる方、教えていただけると幸いです。 エラーの内容 Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in C:\ZendFramework-1.9.0\library\Zend\Controller\Dispatcher\Standard.php:242 Stack trace: #0 C:\ZendFramework-1.9.0\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\ZendFramework-1.9.0\library\Zend\Controller\Front.php(212): Zend_Controller_Front->dispatch() #2 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\zendapps\index.php(3): Zend_Controller_Front::run('../zendapps/con...') #3 {main} thrown in C:\ZendFramework-1.9.0\library\Zend\Controller\Dispatcher\Standard.php on line 242

    • ベストアンサー
    • PHP
  • Zend Frameworkが機能しなくて

    困っています。 Fedora11にZendFrameworkをDLして解凍して /usr/local/ZendFramework-1.9.3PL1 として入れました。 /etc/php.ini: ......... include_path = ".:/usr/local/ZendFramework-1.9.3PL1/library" ......... と設定し /etc/httpd/conf/httpd.conf: ......... LoadModule rewrite_module modules/mod_rewrite.so ......... <Directory "/var/www/html/zend/public"> AllowOverride All </Directory> と設定し /var/www/html/zend/public/.htacess: RewriteEngine on RewriteBase / RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php と設定し /var/www/html/zend/public/index.php: <?php require_once 'Zend/Version.php'; echo Zend_Version::VERSION; とし #service httpd restart とアパッチを実行し Firefoxブラウザのアドレス欄に http://localhost/index.php を入力しアクセスしたところブラウザに Not Found The requested URL /index.php was not found on this server. Apache/2.2.13 (Fedora) Server at localhost Port 80 と404エラーがでます。 ちなみに http://localhost/zend/public/index.php にアクセスすれば 1.9.3PL1 が問題なく表示されます。 しかしこれではZendフレームワークでWebアプリを組めません。 どうすれば解決できるでしょうか?

    • ベストアンサー
    • PHP
  • Zend Framework で大きなファイルをダウンロードしたい

    ホームページをtarでバックアップしてZend Frameworkでダウンロードしたいのですが、 http://php.benscom.com/manual/ja/function.readfile.php を参考に次の様にしてみたところ、数Mbyte程度のファイルはダウンロードできましたが大きなファイル(200Mbyte)ではエラーになりました。 public function DownloadAction(){ $file = "test.bin"; $this->_helper->viewRenderer->setNoRender(); $response = $this->getResponse(); $response->clearAllHeaders(); $response->clearBody(); $response->setRawHeader('Content-Description: File Transfer'); $response->setRawHeader('Content-Type: application/octet-stream'); $response->setRawHeader('Content-Disposition: attachment; filename='.basename($file)); $response->setRawHeader('Content-Transfer-Encoding: binary'); $response->setRawHeader('Expires: 0'); $response->setRawHeader('Cache-Control: must-revalidate, post-check=0, pre-check=0'); $response->setRawHeader('Pragma: public'); $response->setRawHeader('Content-Length: ' . filesize($file)); $response->sendHeaders(); $response->setBody(file_get_contents($file)); $response->outputBody(); } それで $response->setBody(file_get_contents(&$file)); $response->outputBody(); の部分を $handle = fopen($file, "rb"); $contents = ''; while (!feof($handle)) { $contents = fread($handle, 8192); $response->setBody($contents); $response->outputBody(); } fclose($handle); とかにしてみましたがこれもファイルが途中で切れてしまいました。 php.iniのメモリ量を増やす以外に、何か方法がありますでしょうか?

    • ベストアンサー
    • PHP
  • Zend Frameworkでoracle接続

    Zend Frameworkを勉強しようと思い始めたばかりのものです。 oracleに繋がらずどこをチェックすればよいのかさっぱりわかりません。 どなたかご教授願えないでしょうか? zfツールを使い雛形を作って、module で分けてみたり、ヘッダー、フッターをlayoutを使って分けたりと少し前進しました。 次はDB接続だと思い始めたのですが繋がりません。 ■環境 CentOS release 5.6 (Final) ■やったこと 1)oracle接続モジュール oci8 をインストール # export ORACLE_HOME=/opt/oracle/product/10.2.0/db # pecl install oci8 php.ini に追記 # vi /etc/php.ini extension=oci8.so 2)ローカルで接続テスト これは問題なく接続できてるみたいなのです。 # more test.php <?php putenv("ORACLE_HOME=/opt/oracle/product/10.2.0/db"); putenv("LD_LIBRARY_PATH=:/opt/oracle/product/10.2.0/db/lib"); // Zend_Dbライブラリの読み込み require_once 'Zend/Loader.php'; require_once 'Zend/Db.php'; $dbInit = array( 'host' => 'localhost', 'username' => 'usrxx', 'password' => 'usrxx', 'dbname' => 'xxdb' ); $db = Zend_Db::factory('oracle', $dbInit); $db->getConnection(); echo 'OK'; $db->closeConnection(); # php test.php OK 3)Zend Frameworkで接続テスト IndexController.php の indexAction でやってみたのですがダメなのです。 public function indexAction() { $dbInit = array( 'host' => 'localhost', 'username' => 'usrxx', 'password' => 'usrxx', 'dbname' => 'xxdb' ); $db = Zend_Db::factory('oracle', $dbInit); $db->getConnection(); $db->getConnection(); echo 'OK'; $db->closeConnection(); } ※/etc/sysconfig/httpdに以下を追加しました export ORACLE_HOME=/opt/oracle/product/10.2.0/db export LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/db/lib 実行するとどうしてもエラーとなります。 ■エラーメッセージ An error occurred Application error Exception information: Message: Unknown exception Stack trace: #0 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Db/Adapter/Abstract.php(315): Zend_Db_Adapter_Oracle->_connect() #1 /home/www/zf/application/modules/default/controllers/IndexController.php(30): Zend_Db_Adapter_Abstract->getConnection() #2 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Controller/Action.php(516): IndexController->indexAction() #3 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('indexAction') #4 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #5 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch() #6 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() #7 /home/www/htdocs/shopping/necs/zf/index.php(29): Zend_Application->run() #8 {main} Request Parameters: array ( 'controller' => 'index', 'action' => 'index', 'module' => 'default', ) どこを確認すればよいかのサッパリわからず投稿させていただきました。 何卒よろしくお願いします。

    • 締切済み
    • PHP
  • Zend_Validate 処理を止める

    下記のようなバリデート処理をして ================================================ require_once 'Validator_Common.php'; $data= array('email'=>$_POST['EMAIL']); $infos = array(); $infos[1] = new ValidatorInfo('email','E-Mailアドレス'); $infos[1]->setValidator(new Zend_Validate_NotEmpty()) ->setValidator(new Zend_Validate_EmailAddress()); $result = ValidatorInfo::outputErrors($infos, $data); ================================================= 入力に間違いがあった場合処理を止めたいと思い if($result){ exit; } としましたが、上手くいきません。 どうすればよいでしょうか。

    • 締切済み
    • PHP
  • Struts2 ファイルアップロード

    Struts2 の複数ファイルのアップロードについて質問があります。 下記の「Uploading Multiple Files using Lists」を参考にしアップロードプログラムを作成致しました。 http://struts.apache.org/2.0.14/docs/file-upload.html File(1) File(2) File(3)をアップロードし、それぞれのファイル情報をデータベースにInsertするのは問題はありません。 ですが、File(2)のみをアップロードし、File(1)とFile(3)は、nullをデータベースにInsertしたいというような場合はどのようにした方が良いか不明です。   ご助言頂けますでしょうか? よろしくお願い致します。

  • ファイルのアップロードができません

    今日始めたばかりの初心者です。 PHPだとCGIに比べ、ファイルのアップロードとか画像の処理が簡単に行えそうなのでチャレンジしてみたのですが、いきなりつまづいてしまいました。 とりあえずファイルをアップロードしてみようと思い、下のようなサンプルをアップロードしてみたのですが、さっぱり動きません。 適当なjpgファイルをアップロードすれば、スクリプトのあるディレクトリに”aaa.jpg”という名前で保存すると思うのですが…。 最後の”var_dump($_FILES);”という命令で、アップロードされたファイルの内容を表示させてるはずなのですが、ファイル送信前も後も”array(0) {}”としか表示されません。 PHPのバージョンは4.34です。 どなたかご教授お願いします。 ************************ <form enctype="multipart/form-data" method="post"> Upload File:<input name="userfile" type="file"> <input type="submit" value="Send File"> </form> <pre> <?php if (!empty($_FILES)) { move_uploaded_file($_FILES['userfile']['tmp_name'],'aaa.jpg'); } var_dump($_FILES); ?> </pre> ************************

    • ベストアンサー
    • PHP
  • ロリポップでZendを導入できますか?

    ロリポップでZendを導入しようとしていますが、エラーが出て困っています。 Zendの場所はユーザから見たら一番上のルート、つまり/home/sites/lolipop.jp/users/***/web/Zend としています。エラーは下記です。(***は私のユーザ名、/aaa/index.phpを実行しています。) Warning: require_once(Zend/Controller/Action.php) [function.require-once]: failed to open stream: No such file or directory in /home/sites/lolipop.jp/users/***/web/aaa/index.php on line 4 Fatal error: require_once() [function.require]: Failed opening required 'Zend/Controller/Action.php' (include_path='.:/usr/local/php5/php') in /home/sites/lolipop.jp/users/***/web/aaa/index.php on line 4 また、.htaccessにはphpのパスを通すため、下記のように書いています。 php_value include_path ".:/usr/local/php5/php:/home/sites/lolipop.jp/users/***/web/Zend/" .htaccessの場所は、Zendフォルダと同じくルートディレクトリです。(つまり/home/sites/lolipop.jp/users/***/web/ の下です。) また、念のため、.htaccessに下記の記述も試しましたが、だめでした。 php_value include_path ".:/usr/local/php5/php:/home/sites/lolipop.jp/users/***/web/" 何が悪いのでしょうか?あるいはそもそもロリポップへのZendの導入は無理なのでしょうか?

    • ベストアンサー
    • PHP
  • ファイルアップロードについて【ギブアップです】

    さくらレンタルサーバーを使っています。 クライアントからサーバーへファイルをアップロードする仕組みを作りましたが、ファイルアップロード失敗になります。 どこがいけないのでしょうか? どうしてもわからず質問させて頂きました。 (さくらレンタルサーバーでは不可能??) <HTMLファイル> <html> <head>テスト</head> <body> <form action="./aaa.php" enctype="MULTIPART/FORM-DATA" method="POST"> ファイル:<input type="FILE" name="upfile"> <input type="submit" value="アップロード"> </form> </body> </html> <PHPファイル(aaa.php)> <?php if (move_uploaded_file($_FILES['upfile']['tmp_name'], "/home/test_serv/www/test/files/")){ print "ファイルアップロード成功"; print_r($_FILES); } else { print "ファイルアップロード失敗"."<br>"; print_r($_FILES); } ?> 出力結果は、「ファイルアップロード失敗」になります><;

    • ベストアンサー
    • PHP
  • Zend framework リダイレクトでデータ受け渡し

    皆さん、お世話になります。 Zend frameworkで、練習として掲示板を作っていまして、 リダイレクトした時にデータを受け渡す方法を調べています。 環境 PHP5.2.8 + Zend framework1.7.1 windowsXP & Linux ■処理遷移 入力→確認→投稿完了 ■画面遷移 トップ画面→確認画面→トップ画面 トップ画面で入力フォームと記事の表示を行い、投稿された時は確認画面を挟み、投稿が反映されたトップ画面へと戻ります。 投稿時、フォームより入力されたデータに問題が無い場合は確認画面へ遷移させますが、 不備があった場合、一度トップ画面へリダイレクトし、どの項目に不備があったかを入力欄の横に表示させてあげたいと思っています。 フォワードだとURLが変わってしまうので、リダイレクトを使っています。 どこの項目かというデータをリダイレクトした時に渡してあげたいのですが、なにか方法はありますでしょうか? リダイレクトだとリクエストが全てリセットされてしまって、POSTなどで渡す事が出来ませんでした。 また、リダイレクト以外でURLを変えずに値を渡す方法などもあるのでしょうか? まだまだ未熟で大した知識もございません。 どうぞよろしくお願いいたします<(_ _)>

    • 締切済み
    • PHP

専門家に質問してみよう