【PHP】下らねぇ質問はここに 9
■ このスレッドは過去ログ倉庫に格納されています
PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 8
http://mevius.5ch.net/test/read.cgi/tech/1489506082/
次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured スレ違いだったらすみません
ネットの中の情報ってどこかに保存されてて僕はそれを引き出して見てるんですか?もしそうだったらどこに保存されてるんですか?
曖昧な質問すみません いわゆるサーバー
とりあえず仮想環境でサーバー作ってみて
慣れたらどこか適当なところでVPSでも借りて好きにやってみればいい
サーバーを触れないPHPerなんて話にならん サーバーを触れるようになるにはlinax系のOSも勉強しないといけませんか? linux知識は必須だ
せっかくこんなスレにくるくらいだから
LAMPシステムの概要読んだり
apacheでhttpサーバー立ち上げたり
php.ini読むことから始めてみては?
それやった上でのhello world は感慨深いものがあるぞ >php.ini読むことから始めてみては?
ええぇぇぇ… >>113
私の場合、WindowsのPCにVirtualBoxで仮想マシンを仕立て、そこにLinuxをインストールしてます。
これに >>114 のようにそれぞれ個別にapache、PostgreSQL、PHPを入れて遊んでますね。 LinuxっていってもデスクトップはWindowsと変わらないけど
いわゆるガチのサーバ機はデスクトップ環境でやらないので
WindowsならDOSプロンプトで遊ぶところからがいいのでは >>107が希望しているアップローダーは、どこに置いて実現したいのかな
自分の手元にあるWindowsPCにPHPをインストールし、
PHPのスクリプトをそこに置いて
コマンドラインでPHPを起動してスクリプトを実行する感じ?
それとも、どこかのレンタルサーバーを借りて、そこにPHPスクリプトを置いて
WindowsPCはレンタルサーバーのHTMLを使い、ブラウザでフォームを表示させ、
そのフォームに手元のファイル名を指定し、ボタンを押してアップロードする? 諸事情でララベルしなきゃいけないんだがSQLが俺は全く出来ないていう状態なんだが
ララベルとSQLはそれぞれ並行してやった方がええかな?分担してやった方がええかな? Laravelみたいなフレームワークは
普通はSQL文を直接書かずにクエリビルダーを通すんだが
何らかのフレームワークは使った事あるのかね
その質問レベルで分業できるのか疑問 >>121
mvcとやらはvueでルーターでビュー振り分けたり変数の値を直接表示したりで慣れてるけど
フレームワークにあるテストやらなんやらの沢山の設定ファイルは苦手やな
今前知識活かしてルーター探してララベルでビューの切り替えした辺り
どの道ララベルとMySQLを覚えなきゃいかんのだが、今は最優先でララベルで二、三個モノを作らなきゃいかん
ガチれば一夜漬けでSQLデータの出し入れ位は出来るようなるかな? >>123
おおありがとうな
本当にやったんだがMySQLのインスコ時に沢山エラー出ただけで
phpから中身吐くの簡単やなぁ SQL周りの質問します
$sql = 'select count(bang) from tbk';
$stmt = $dbh->prepare($sql);
$stmt->execute();
こう書いてcountでデータベースの行数を取得してその値をPHP側で受け取るにはどういうコード書けばいいですか?
$count = $stmt->fetch(PDO::FETCH_ASSOC);
こう書いて$countで受け取ってvar_dumpで調べたら連想配列なんですが$count['bang']としても値を得れません
データベースのカウント後を受け取るにはどう書けばいいんでしょうか? データベースのcountを普通の変数として受け取りたいです。 たぶん名前はcountになってると思うけど
SQLのほうで as つけて好きな名前にしたら確実かと思う >>126
$count = $stmt->fetchColumn(); $count['count'] か
$sql = 'select count(bang) as bang from tbk';
でもよかったのよ、ってこれ意味わからなかったのか >>130
ありがとうございます
理解できてませんでした
$count['count'] のほうではできませんでしたが
$sql = 'select count(bang) as bang from tbk';のほうでcount['bang']としたら通りました。
難しいですね・・・ include_once って読み込むファイルを http://・・・ で指定する方法は
無いの? php.iniでallow_url_includeをOnにして
include_onceすればオッケー おっけーだけど実際何もおっけーじゃねぇな, HTTPとか正気の沙汰ではない >>131
$sql = 'select count(bang) from tbk';
このままで実行したときは、
$count['count(bang)'] に入っている >>135
>HTTPとか正気の沙汰ではない
なんでよ? 改竄されたら任意コード実行に直結やぞ
せめてちゃんとした証明書付きのHTTPSは必要
それでも何か嫌だけど >>138
>改竄されたら任意コード実行に直結やぞ
それは今回の質問の件と関係なく
改竄された時点で危険なんじゃないの? >>136
var_dumpで調べたとき確かそうでました。
そのまま括弧もつけて書くとは思いませんでした。
勉強になります。ありがとうございます。 文法を一通り習って、Laravelなるフレームワークが主流と聞いて調べてみたのですが、自分の知ってるPHPとだいぶ違って面食らいました。
これはオブジェクト指向プログラミングなるものを習えばわかるようになるのでしょうか?
公式のドキュメント読むとルーティングとかコントローラーとか解説なしで当然のごとく出てきて激鬱です。
何をすればLaravelが使えるようになるか書籍・ウェブサイト等、指針を示して頂きたいです。 フレームワークはコーディングにルールや制約を持たせることで
簡単に構築できるようになってるので
自分の知らないことや言葉に惑わされず
とりあえず書かれてる通りに従って真似してみればいいだけだよ
サンプルを何個かやってくうちにどんなもんかわかるだろうし >>142
とりあえずLaravelのチュートリアルでもやったらいいんではないか
あとMVCの基本的な構成は勉強してもいいかもね フレームワークまじでわからん
内容や構造を理解、構築しようとするのではなく、ひたすら「手法」を学べ
ってアドバイスされたがそれでもわからん、ってかこのアドバイス本当にあってんの?俺の頭がイカれてるのかと思い始めてきた >>145
フレームワークは構造を理解した上で使うもの。職場でそれ言われたんならすぐ他行ったほうがいい。 >>143-144
ありがとうございます
とりまやってみます 48都道府県名が格納されてる配列があるとして
例えば東京都が格納されてる配列番号を知りたいときはpreg_grepとprint_rを使った結果を確認すればいいみたいですが
検索して結果の配列番号だけを変数に格納するにはどうすればいいのでしょうか? 下手にarray系の関数使うよりforeachでやったほうがたいていパフォーマンスはいい と書いてみて気になって測ってみたけど
array_searchのほうが早かったな
php5時代の常識はもはや通用せんね >>149
$ken = ['東京', '京都', '大阪'];
$kenFlip = array_flip($ken);
var_dump($kenFlip['京都']); Ruby on Rails 5.2正式版発表。Active Storageによるクラウドストレージ対応、Redisでのキャッシュ対応など
http://www.publickey1.jp/blog/18/ruby_on_rails_52active_storageredis.html
>Active Storageは、Amazon S3やGoogle Cloud Storage、Microsoft Azure Storageのような
>クラウドドストレージに対してファイルをアップロードし、
>それらのファイルのActive Recoredオブジェクトへの添付を容易にする機能です。
>また、ミラーリング機能によって複数のクラウドストレージのあいだでファイルを同期することもできます。
>これによって高い冗長性などを実現可能です。
これは良さそうですがPHPにこういうのありますか? >>153
Symfony
+
Doctrine
+
VichUploaderBundle
+
Flysystem
FlysystemのAWS S3用アダプタ
でDBへの書き込みと画像のS3へのアップロードなら出来る
冗長化は無いが
サムネイル作成が必要ならLiipImagineBundleで
VichUploaderはPropelやMongoDBにも対応している
FlysystemはSymfony以外も対応している グラフ画像を作って保存したいんですけど簡単なライブラリみたいなのってありませんか?
グラフを表示するhtmlやCSSをはくとかはあるみたいなんですけど
グラフ画像を作るのはさがしてもみあたらなくて… レンタルサーバーを借りてphpの勉強はじめたんですけど
/ドメイン名/public_html/ 以下に php ファイルをおくとエラーが出たときに
/home/アカウント名/サーバー名/public_html/...
のファイルでエラーがありましたってでちゃうんですけど
アカウント名をみえなくすることってできませんか?
関数全部に@つけるのも微妙だし
何かの拍子でアカウント名みえちゃうのいやなんですよね レンタルサバのエラーディスプレイいじれるんならいじる .htaccessか.user.iniでdisplay_errorsをoffにしてerror_logを設定しておくのが普通では >>158,159
できましたありがとうございます
Xサーバーなんですけどphp.iniがおいてあったのでそのなかの
display_errors = Off
にしてみました
あとはじめから
log_errors = On
log_errors_max_len = 1024
ってなってるんですけどこれどこに表示されるんでしょうか
エラーがまったく表示されないのもそれはそれで困るかも… これは設定ファイルとかじゃなくてphpのなかに書く関数なんですか?
自分で関数も戻り値とかをハンドリングしてエラーをハンドリングして使う感じなんでしょうか?
エラーメッセージも自分で作らないといけないみたいだし…
そもそも構文エラーとかの場合これどうやってハンドリングすればいいんでしょう
デフォルトのエラーメッセージに絶対パスを表示させたくないだけなんですけど結構大変なんですね… phpで設定を行う方法は主に3つ
・サーバ側の設定ファイル(php.iniやhttpd.conf)に直接書く方法
・phpスクリプトにini_set関数を使って書く方法
・専用の関数が用意されてればphpスクリプトに専用関数を使って書く方法
phpの設定がどこで行えるかは下記の通り
http://php.net/manual/ja/configuration.changes.modes.php
今回のerror_logは
http://php.net/manual/ja/errorfunc.configuration.php
PHP_INI_ALLなのでphp.iniに直接書くことも出来るし
ini_set関数を使ってphpスクリプトに書くことも出来る
http://php.net/manual/ja/function.ini-set.php
また同名の関数が用意されてるのでそれを使ってphpスクリプトに書くことも出来る
http://php.net/manual/ja/function.error-log.php うまくいかない…
エラーも表示されないし
ログファイルに書きこめない
パーミションもあけてるんですけど
せっかく丁寧に回答もらったのに申し訳ないんですがもうパス表示されたままであきらめます
phpのコードの勉強がしたいのにサーバーの設定だけで土日つぶれそう… xamppでもいれて自鯖でやれよ
レンサバでやる意味がわからん >>164
<?php
ini_set('display_errors', 0);
ini_set('log_errors', 'On');
ini_set('error_log', '/home/アカウント名/サーバー名/errors/error.log'); >>16
ありがとうございます
/homeからのパスを設定しないといけなかったんですね…
php.ini に設定すればログがふえるようになりました
本当に感謝です c言語から勉強初めてjava→html/css→javascript→php→mysql→jqueryときてwordpressの本読んだけど
ウェブやるならこれだけでいい気がして今までの時間が凄く無駄に思えてきた・・・
phpとかできたほうが有利な点を教えてください・・・
モチベーションが・・・ 何かウェブサービスをやりたいとか
スマホでゲームとか作ってユーザのデータを集約させるバックグラウンドが必要とかでなく
ただWebサイトを構築したいってだけなら別にWPでいいんじゃない?
モチベが欲しいならWPなしでサイト構築するためにPHP学ぶでもいいのでは?
PHPerは無駄が好きなのでJava脳で車輪の再発明嫌いな人はPHP向いてないかもね 同じサーバー内で、自プログラムが置かれているディレクトリとは異なるディレクトリにある
ファイルを読み込みたいのですが、そのディレクトリはBASIC認証をかけています。
この場合、phpプログラムから認証を突破するための手続きはどうすればいいでしょうか?
IDとパスワードはもちろん分かっている状態です。 httpでやる必要がないならbasic認証関係ないんで
ローカルのファイルのパスがちゃんと指定できてれば読める
もしhttp経由で読み込む必要があるのなら
http://php.net/manual/ja/function.file-get-contents.php
ここの例4のとこ参考にして
Authorizationヘッダをつけてリクエスト送ればいい
"Authorization: Basic {$token}\r\n"
$tokenはbase64_encode('id:password'); >>172-173
思い違いと動作確認でもミスがあり、何か処理が必要と思い込んでいました。
すっぱり整理してやり直しをし、無事動作することが確認できました。
どうもありがとうございました。 ここで聞いていいのかわからないんですが、フレームワークの利用に関する質問です
5年以上前に誰かが作ったWebサイトを運用していく必要があるのですが、フレームワークはEthnaを利用しています
当時サイトを作った人や、その後追加改修を行った人は、もういない状態です。
Ethnaの使用感としては5年以上前に開発が止まっていて、ドキュメントも未完成。
これに学習コストを払うのは嫌だなあというのが本音です。人不足で新しい人も入ってきているのですが、覚えてもらうのが申し訳ないレベルです。
ただ、フレームワークを変えて書き直すとなると、ほぼサイトをリニューアルすることになります。
そもそもフレームワーク関係なく、設計書もなく、中身がブラックボックス化しているサイトなので、リニューアルは何度か検討しています。
が、やはり時間がかかってしまうので、なおしたいことがあればその都度プログラムを読んで、修正しています。
なので、「現状のままであるリスク」を「リニューアルするコスト」がこえないと、なかなか上を説得することが難しいという状態です。
このWebサイトは、年数億円を売り上げており、何かの拍子に動かないというのは許されない状況です。
前提としてはここまでで、ここからが質問なのですが
5年以上前に作ったサイトの、5年以上前のフレームワークをそのまま扱っていくリスクというのは、どう見積もれば良いものでしょうか?
古いシステムをそのまま使い続けてる現場に入ったなら、どのように考えますか?
一応進言すれば、現状は変えられる可能性が高いのですが、判断に悩んでいます。 動かなくなったらまずいといいつつ、
よくわからないものをいじって、なんとなく動いてるってことだよね?
その現状に危機感を抱くべきでは?
個人がフォークしたEthnamという後継プロジェクトはあるみたいだけど、
5.4で動くなんてのをウリにしてるあたり、
オリジナルはサポート切れのPHPバージョンを使ってるのだろうけど、
それだけで十分置き換え理由になるのでは? >>175
コスト面では定量してTCOで比較すればよい
リスク評価も定量して算入するならリスクを分類した上でリスク発生率と予想損失額の積で損失見積もりとする サイトの仕様を解析して理解する所から始める。
仕様さえ分かれば、フレームワークなんて大したことないって気づきそう よく知らないけど、5年以上前のフレームワークってセキュリティ的にどうなの FastCGIで動かす時にアプリケーション初期化のコードは最初の1回だけ実行したい
というより予め実行済みの状態でリクエストを待機させたいんだけど、どうすればいいの? ファイルを file_get_contens() や file_pet_contents で読み書きしたいんですが
ロックってどうすればいいんでしょうか
flockにファイルディスクリプタが必要みたいなんですけど
それを使って与密会するわけじゃないのでRD_ONLYで開いてもいいんでしょうか
$fp = fopen($filename, 'r');
if (flock($fp, LOCK_EX)) {
file_get_contents($filename);
〜
file_putt_contents($filename);
flock($fp, LOCK_UN)
}
でうごきますか?
ロックファイルはわける必要がありますか?
ロックがぶつかるケースをデバッグできないので大丈夫なのかどうかがよくわかりません $fp = fopen($filename, 'c+');
if (flock($fp, LOCK_EX)) {
$buf = '';
while ($tmp = fread($fp, 1024)) {
$buf .= $tmp;
}
rewind($fp);
ftruncate($fp, 0);
fwrite($fp, $buf.$buf);
flock($fp, LOCK_UN)
} スマホ向けに下記をhtmlのheadに書いた場合は、スマホの横サイズいっぱいで折り返し表示されますが、
<meta name="viewport" content="width=device-width,initial-scale=1" />
php埋め込みhtml(拡張子はphp)に上記を書いても折り返してくれません。
他に何かお作法が必要でしょうか? 文字コード周りに問題がなければ
PHPで出力したHTMLのソースを表示してみてオリジナルのHTMLと対比してみては?
エスケープミスでタグが閉じられてない状態で出力されてるとかそんなレベルかもしれない
サーバ側で関連ヘッダーを出力しちゃってる可能性もあるので
理解出来るならブラウザの開発者ツール使ってHTTPヘッダの中身チェックするといい
なんにせよ再現できる全体ソースが出ないことには答えようがない >>186
原因が分かりました。
変数に改行(\n)付きの長いメッセージを入れてあり、それを表示するのにpreタグ
で囲っていたのが原因でした。
preタグを使わずに改行付きの長いメッセージを表示する方法を考えてみたいと思います。
どうもありがとうございました。 連投すみません。
nl2brを使えばすぐでしたね。
初歩的なことですみませんでした。 >>184
やっぱりロックとる場合はロックをとったファイルディスクリプタに
fread, fwriteで読み書きする必要があるんですね
コード参考にさせていただきます
ありがとうございました プログラムの基本を教えてください。
一つのphpファイルが300行をオーバーしてしまったから、汎用性はないけど一まとまりの機能があって、色んな所から呼び出す処理を別のphpファイルにしてインクルードで呼び出す、
という形で小分けにしていこうと思ってますが、そんな風にバラバラにしてしまってもいいんでしょうか? その考えの行きつく先にオブジェクト指向があるのでオブジェクト指向入門するといいかな
方向性としてはあってるのでとりあえずは思った通りにやってみては?
あと行数に関していえば1万行クラスのソースコードはざらなので(半分はコメントだったりするけど)
長い行数になったときのソースコードの管理の仕方をIDE使って覚えていくといいよ >>191
返信ありがとうございます。1万行はぞっとします。とりあえずはこの方向性で行きたいと思います。 >>189
ファイルロックについてはその通り
stream_get_contents()を使うと>>184よりはもう少しスッキリ書けるかと 関数の呼び出しがあっているのかわかりません
ボタンでCreateとLikesの処理をわけたいんですが、うまく実行できません
(ボタンの処理は別のPHPファイルに書いてます)
create_qaとUpdate_likes_whenbuttonClickは、単体であれば実行ができているのはわかっているのですが、振り分けるためのbutton_Click関数に入れた途端動かなくなります
returnで、振り分けそのものができていることは確認しました(IDを表示することができたので、問題がないかと思っています)
何か間違っていそうか分かる人教えて下さい
public function button_click(Request $request,$session_id){
if(isset($_POST["create"])){
$this->create_qa($request,$session_id);
}
else if(isset($_POST["likes"])){
//return $session_id; これはできてる
$this->update_likes_whenbuttonClick($request,$session_id);
}
} エラーログは読んだの?
超能力者じゃない限りソースだけ貼られても分からんよ >>195
errorが全くでなくて、むしろ真っ白なページが表示されます・・・
関数単体だときちんとreturn viewしたページに飛んで、処理もできているのに、こっちだとできないです >>197
return でelse以降に入ると数値が表示させるようにして確認しましたが、今のところ流れてはなさそうです
分岐を一切作らずに
$this->create_qa($request,$session_id);
だけ入れてもおかしなことになるので、
$this->〜〜〜っていう表記が間違っているような気がするのですが何がおかしいのか全く分からず・・・ >>198
簡単な別のメソッドを作って呼び出せるか試してみたら >>199
引数なし、return0をするだけの別の関数を作って、同じように呼び出しをしてみましたがだめでした、
やっぱりthis〜の行が何かしら影響を及ぼしてるようです・・・ error_logでファイルにエラー吐いてないのか?
画面出力はエラー出力でHTTPヘッダとか壊れてまともにならんことも多いぞ >>201
ためしにエラー出力してみましたが、全く何もでてないようで・・・ >>194
ですが解決しました!
分岐文の内部でreturn viewができてないのが原因でした
すみませんお騒がせしました 変数の$〜〜の$ってなんて読むの??
ドルなんとかって読んでるんだけど間違い? 文字列全体を正規表現判定するのってどうすればいいんですか?
入力に不正文字がないかチェックしたいんですけど
pregmatch('/[0-9a-zA-Z]+/', $input)
だと一部にマッチしてもtrueになっちゃうので
文字列全体で数字アルファベットしか使われてないことを確認したいです ^[0-9a-zA-Z]+$
そういう単純なものは正規表現使うまでもなく
他の関数が用意されてると思ったほうがいい
http://php.net/manual/ja/ref.ctype.php ctype_alnumを使えばいいんですね
ありがとうございました! あとPHPの配列についてききたいんですけど
a[] = 2;
a[] = 4;
や array(2,4) でつくった場合Cやjavaの配列と同じくメモリ上にvalueだけがならんで
a[1] でアクセスした場合アドレス計算でアクセスされるんでしょうか?
それとも自動的に連想配列になって '1' っていう key を検索するんでしょうか?
メモリにははいるけどキャッシュにははいらないそこそこ大きなテーブルデータを扱ってるので気になりました 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
Q3682 ■ このスレッドは過去ログ倉庫に格納されています